如何以编程方式检查电子邮件地址在Gmail上的存在?



如果你谷歌"如何检查电子邮件地址是否存在"的问题,你会发现,基本上,只有使用SMTP协议的解决方案是不可靠的。我尝试了这种方法,发现Gmail SMTP服务器在我询问的每个电子邮件地址上都说"是的,此电子邮件已在此处注册"。我怀疑大多数流行的电子邮件服务器都使用了这种策略。

我想分享的方法用于Gmail注册表,以确保您要注册全新的电子邮件。它使用 AJAX 请求询问 Gmail 服务器给定的电子邮件是否存在

Request URL:https://accounts.google.com/InputValidator?resource=SignUp
Request Method:POST
Status Code:200 
Remote Address:173.194.222.84:443

响应标头

alt-svc:quic=":443"; ma=2592000; v="37,36,35"
cache-control:private, max-age=0
content-encoding:gzip
content-type:application/json; charset=utf-8
date:Wed, 29 Mar 2017 21:06:06 GMT
expires:Wed, 29 Mar 2017 21:06:06 GMT
server:GSE
set-cookie:GAPS=1:<redacted>;Path=/;Expires=Fri, 29-Mar-2019 21:06:06 GMT;Secure;HttpOnly;Priority=HIGH
status:200
strict-transport-security:max-age=10893354; includeSubDomains
x-content-type-options:nosniff
x-frame-options:DENY
x-xss-protection:1; mode=block

请求标头

Provisional headers are shown
Content-type:application/json
Origin:https://accounts.google.com
Referer:https://accounts.google.com/SignUp?hl=en-GB
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

查询字符串参数

resource=SignUp

请求有效负载

{"input01":{"Input":"GmailAddress","GmailAddress":"andy.v.che","FirstName":"","LastName":""},"Locale":"en-GB"}

响应

{"input01":{"Valid":"false","ErrorMessage":"Someone already has that username. Note that we ignore full stops and capitalisation in usernames. Try another?","Errors":{"GmailAddress":"Someone already has that username. Note that we ignore full stops and capitalisation in usernames. Try another?"},"ErrorData":["andyvche959"]},"Locale":"en_GB"}

如您所见,如果确实存在此类电子邮件,则回复中"Valid":"false",如果不存在,则(剧透)"Valid":"true"

限制查询

Gmail的人确实知道这种方法可能会被垃圾邮件发送者用来查找现有电子邮件。这就是为什么他们不允许使用它进行大规模扫描的原因。我做了一段时间这样的扫描,每天大约只能扫描 200 封电子邮件。

更多详情

我每分钟扫描 1 封电子邮件,如果我收到回复"不,这封电子邮件不存在",我还问我自己的电子邮件是否存在。如果我得到"不,您的电子邮件也不存在"的答案,我可以清楚地理解我的IP地址禁止使用Gmail服务器。然后,我休息了45分钟以解禁,然后继续循环。每天扫描的电子邮件数量在200左右波动。

您可能会问:您像垃圾邮件发送者一样进行了扫描,当时您进行扫描的目的是什么?

我的答案是:我试图找到一个写电子邮件不清楚的人(糟糕的草书)。没有其他选择可以找到他。

他的书面电子邮件中有 3 个不清楚的字母,但很明显它的域是 gmail.com,所以我想出了一个主意,找到一种方法来检查 Gmail 上是否存在电子邮件地址,生成所有可能的电子邮件列表(尝试用所有可能的英文字母替换未知符号)并检查它们是否存在。然后,向所有现有的人发送一封信。

这个问题讨论了这些信息的发布权。我知道这篇文章对垃圾邮件发送者非常有用,所以为了安全起见,我愿意部分甚至完全删除它。

最新更新