前言,之前在豆瓣日志写了这片文章,结果被豆瓣官方删除了。。。哎,转到这里记录一下。
故事起因: 上周的时候吧,发现有条疯狗在这张剧照(天生杀人狂)下面骂我。如果只是骂我傻逼我还能忍,毕竟人在江湖飘哪人不挨刀。但是你问候的范围大了,那作为一个社会主义核心价值观没有问题的青年,我必须得去操一下你妈了吧。请点击操他妈热线。结果这个怂逼居然还发私信骂我然后还把我拉黑了,真鸡巴怂。只能在剧照评论下回怼,但剧照毕竟是个公共地方,回多了有碍观瞻。既然私信也没法发了,想了想,那就注册个小号吧,写个脚本骂它7749天也不错呀,说干就干,知识就是骂娘。(ง •̀_•́)ง =========================分割线============================= 代码思路: 1. 账号注册 豆瓣现在的账号注册机制需要邮箱与短信双重验证。这就比较麻烦了,但是有一个小漏洞可以跳过邮箱,只需要手机号就可以注册。具体链接我就不在这里明说了,请参考代码实现。 2. 手机号 注册一个账号就需要一个手机,并且还要接受验证短信,我哪来那么多手机呀?问这种问题的同学说明你的互联网思维还不够深刻啊。来,请百度“验证码接收平台”,为你打开新世界的大门。 3. 破解验证码 手机号的问题搞定了,但是下一个问题接踵而来。我发现点击接受短信验证码的时候,豆瓣会很贱的先弹出一个Captcha验证码。由于之前做过类似项目,第一思路就是那上Tesseract-OCR呗。我下面的代码实现也是用的PyTesseract。 先对验证码图像二值化,再降噪,最后进行ocr识别。 经过几天的运行,发现识别成功率低的吓人。只有35/882 = 3.97%。 不过好在豆瓣没有对验证码图像的获取进行限制,可以暴力破解。 作为一个不怕困难、艰苦奋斗的党员,我决定尝试一下对Tesseract进行训练。我取了500张验证码图像,熬瞎了我的眼睛,终于完成了这一项21世纪的伟大工程,兴致勃勃的将db.traineddata放入Tesseract目录下,点击运行。 WTF!识别率稳定在0.00%, 什么鬼哦,是我训练的方式不对吗?ᕕ༼ ͠ຈ Ĺ̯ ͠ຈ ༽┌∩┐ 算了,万事开头难,只要肯放弃。训练这种事情不适合我这个懒人。这个时候,我的互联网思维突然春光乍泄,诶,有没有验证码破解平台呀?我直接用别人的不就好了!我真棒 微软、百度、腾讯都有提供ocr接口,但是好像效果也不咋滴,我试了试微软的发现还不如本地Tesseract。就在这时候,我发现有某位不愿意透露姓名的网友提示了可以找“打码平台”,使用真“人工”智能来进行验证码破解,一条验证码也就1分钱左右。卧槽,这简直是为我打开了一扇新世界的大门。我试了下云打码,效果还真不错嘿,大概5秒左右能返回结果。主要是这网站的py接口写的还可以,其他打码平台的py接口写的实在太垃圾了,惨不忍睹。 4. 豆瓣的自动防御机制 首先,新注册的账号给人发送私信的话,好想都会被丢进对方的垃圾豆邮里。我估计豆瓣会验证新账号的完整性,比如有没有头像呀之类的。我懒得测试了,打狗并不值得投入太多时间,毕竟我还在那狗逼的广播页面操他妈了,这个是会有豆瓣提醒的,垃圾豆邮的话,等他哪天不小心点开,大概会很惊喜吧。挺好。 第二,一个ip地址注册的账号数应该是有限制的,比如一天内只允许注册多少个这样。如果超过阈值,注册可以成功,但是登陆后访问任何一个页面,都会被跳转到手机验证页面,提示账号有异常,需要再次发送短信验证。。。。(2018.01.16订正:可能不是注册数限制的问题哦,有可能只是碰巧那几个手机号有“问题”,导致豆瓣需要该手机号主动发短信进行验证。) =========================分割线============================= 代码: https://share.weiyun.com/5aaXApZ =========================分割线============================= 如果这篇文章与代码对你有一点点帮助,肯请不吝口舌,帮我去这傻逼的主页问候他全家。谢谢。 傻逼的主页