话说上回说到通过selenium自动填写注册账号表单,并模拟操作腾讯验证条触发验证码发送。接下来是要从temp-mail中爬出验证码,并自动填写。点击“注册”,即可以领盒饭了。
路途看似很近,但又很遥远。人艰不拆!
最开始的逻辑是,要拿到邮件内容里的触发验证链接。所以,首要解决的问题是拿到对应邮箱的邮件内容。
如果,temp-mail不作妖,获取邮件内容有两个方案。
方案一,模拟浏览器操作,将对应邮箱填写后<save>,然后触发<refresh>,然后通过id爬取邮件内容。
现在<save>后会不断提示,操作疑似robot。心里暗骂,temp-mail不就是给大家提供这个便利的么。路被堵死了。
方案二,通过temp-mail api 操作。
def mail(user, domain): global count ss_mail = requests.Session() rsp_get = ss_mail.get("https://temp-mail.org/zh/option/change/") csrf = re.findall(r'name="csrf" value="(\w+)', rsp_get.text)[0] tempmail = {"csrf": csrf, "mail": user, "domain": domain} ss_mail.post("https://temp-mail.org/zh/option/change/", data=tempmail) rsp_refresh = ss_mail.get("https://temp-mail.org/zh/option/refresh/") url_box = re.findall(r"https://temp-mail.org/zh/view/\w+", rsp_refresh.text) while url_box == []: time.sleep(1) rsp_refresh = ss_mail.get("https://temp-mail.org/zh/option/refresh/") url_box = re.findall(r"https://temp-mail.org/zh/view/\w+", rsp_refresh.text) rsp_message = ss_mail.get(url_box[0]) url_verify = re.findall( r"https://www.processon.com/signup/verification/\w+", rsp_message.text ) rsp_verify = ss_mail.get(url_verify[0]) if rsp_verify.status_code == 200: count += 1 print("{}@{} 成功! 【共成功{}次】".format(user, domain, count))
因为涉及到跨域,在http header 中加入了 csrf。这个地方 temp-mail 也发生了变更。
csrf = re.findall(r'name="_csrf" value="([\w-]+)', rsp_get.text)[0]
名称改了,值的规则由原来的 \w(字母、下划线、数字) 变成了字母、下划线、数字和 '-'。
满心欢喜。突然地发现 temp-mail API 改规则了。所有的API都托管到了 rapidapi 平台。然后,调用API需要各种 api key,不能忍的是需要绑定相关支付信息。
如果,是某微或者某宝,我可能还会继续。可是不是啊,,,
所以,路也被堵死了。
卒!
从这个趋势看,temp-mail后面可能会收费。而且跟之前的哲学不一样了。一点都不方便,通过平台绑定app key,相关操作不就会被追踪到么,哪里还有temp体验。
当时,想着。process on 注册咋不限制只能使用手机号呢!还别说,就在几天前,我想起这件事的时候,再折腾的时候,process on已经这么干了。
悔当初,可以刷的时候没有把容量多刷一点。
真是:有花堪折直须折,莫待无花空折枝!
不过,想要自动化扩容也不是没有办法的。仔细阅读了processon的扩容路径,集齐5个赞就可以召唤神龙!
所以,搞到6个账号,通过 selenium 模拟点赞。有时间,再将这个方案实操一把。6个账号怎么搞?这是个秘密!
综上,通过这次实操:
1. 对 selenium 爱不释手,给人的想象空间很大;
2. 对 DOM 内容抓取有一定的熟悉;
3. 正则表达式的应用,不知能不能让我进入它的内心。
我还会回来的。其实,我的processon容量马上要红线了。