Как получить конечные точки источников электронной почты для результирующих писем в django rest framework
Я создал инструмент для проверки электронной почты, поиска и поиска домена в django rest framework. Я использовал Isitarealemail api's для интеграции для проверки и поиска электронной почты. но для поиска домена я использовал библиотеку email finder (emailfinder==0.3.0b0), она использовалась для поиска доменов с помощью поиска google. она также успешно возвращает электронную почту, присутствующую в доменах, но мне также нужна исходная конечная точка (url ссылки на электронную почту, откуда она найдена). как ее получить. я разместил код ниже
Это мой файл views.py
class email_from_google(APIView):
def get(self, request):
raw_domain = request.query_params.get('domain_name')
if raw_domain is not None and raw_domain != '':
if raw_domain[-1] == '/':
raw_domain = raw_domain.replace('/', '')
pattern = re.findall('https|http|www', raw_domain)
if raw_domain is not None and pattern == []:
try:
search_query = Google_email_model.objects.get(domain=raw_domain)
return Response(search_query.emails)
except:
scraped_email = get_emails_from_google(str(raw_domain))
scraped_email_count = len(scraped_email)
if scraped_email_count != 0:
google_emails = dict(emails=scraped_email,email_count=scraped_email_count)
query_data =
Google_email_model.objects.create(domain=raw_domain,emails=google_emails)
query_data.save()
return Response(google_emails,links, status=status.HTTP_200_OK)
no_email = dict(emails=[], email_count=[])
return Response(no_email)
error = dict(error='valid domain required')
return Response(error)
error = dict(error='valid domain required')
return Response(error)
Это мой emailfinder домен google.py файл
def search(target, proxies=None, total=200):
emails = set()
start = 0
num = 50 if total > 50 else total
iterations = int(total/num)
if (total%num) != 0:
iterations += 1
url_base = f"https://www.google.com/search?q=intext:@{target}&num={num}"
cookies = {"CONSENT": "YES+srp.gws"}
while start < iterations:
try:
url = url_base + f"&start={start}"
response = requests.get(url,
headers=user_agent.get(randint(0, len(user_agent)-1)),
allow_redirects=False,
cookies=cookies,
verify=False,
proxies=proxies
)
text = response.text
if response.status_code == 302 and ("htps://www.google.com/webhp" in text or "https://consent.google.com" in text):
raise GoogleCookiePolicies()
elif "detected unusual traffic" in text:
raise GoogleCaptcha()
emails = emails.union(get_emails(target, text))
soup = BeautifulSoup(text, "html.parser")
# h3 is the title of every result
if len(soup.find_all("h3")) < num:
break
except Exception as ex:
raise ex #It's left over... but it stays there
start += 1
emails = list(emails)
if len(emails) > 0:
print_ok("Google discovered {} emails".format(len(list(emails))))
else:
print_info("Google did not discover any email IDs")
return (emails)