对于爬虫来说,一种绕开验证码登录的好办法

2020-02-08 12:33:16 +08:00
 tikazyq

在爬虫开发过程中,经常会遇到验证码的情况,这是反爬过程中相当有门槛的措施,破解成本非常高,需要深度学习、JS 逆向等相关的经验,而且成功率还不一定很高。即使破解成功,如果目标网站换了验证码生成的方法或算法,那么费了九牛二虎之力才成功破解的工作将前功尽弃。因此,破解验证码这种反人类的事情,真的不适合新手。

那么,用什么方法才能够避免验证码,从而完成登录呢?如果一个方法不行( Not working ),我们不要死磕( Stick to it ),我们可以尝试采用绕开的方式( Workaround )。而本文将介绍一种简单可行的绕开验证码的办法,并且实践证明是非常有效的。目前关于这种方法的网上资料并不多,本文将简单介绍一下,权当抛砖引玉。

文章链接: 地址

9830 次点击
所在节点    程序员
76 条回复
515576745
2020-02-08 16:36:24 +08:00
小白都会的方法? cookie browser 就是这样的
LevineChen
2020-02-08 17:24:28 +08:00
早些年确实流行这种攻击方式, 现在不清楚有这种漏洞的网站还多不多了.
matsuijurina
2020-02-08 17:40:17 +08:00
本来以为是某个打码公司的软文,没想到楼主竟如此可爱
a852695
2020-02-08 17:45:19 +08:00
楼主在无聊的在家时光给了我巨大的快乐。
zhw2590582
2020-02-08 17:46:29 +08:00
不用点开文章看了,其实这个方法可以浓缩成 100 字以内,小白都能看懂。
springGun
2020-02-08 17:59:32 +08:00
@locoz 原来是知乎的爬虫大佬,通过 app 抓包获取的 session 不会被风控识别吗? 如果抓取到假数据你是怎么区分的? 人工筛选吗?
locoz
2020-02-08 18:08:45 +08:00
@springGun #26 不是大佬,菜鸡一个。

我说的这种方式,取到的 session 是你手机上日常使用的帐号的 session,只要后续的请求参数啥的都没问题就不会有啥问题,毕竟你的日常操作已经把对方风控的真人度分值给拉高了。

假数据一般可以先用随机抽出部分数据人工比对的方式判断是否正常,如果正常了的话后续就可以程序自己判断了。比如说商品价格之类的,有一种很常见的方式就是与之前价格的平均值做比较,如果大范围出现差异过大的情况就可以判定为被喂假数据了。
locoz
2020-02-08 18:12:22 +08:00
@zhw2590582 #25 缩到 100 字以内小白还真看不懂😂大部分小白由于知识面还没扩开的关系,会不知道具体该怎么做。
tikazyq
2020-02-08 18:38:08 +08:00
@finely 既然这种方式有效,你是不是后悔没提前备着呢
kisshere
2020-02-08 18:42:51 +08:00
这项目我王多鱼投了!
tikazyq
2020-02-08 18:49:36 +08:00
一回来看到这么多评论,而且很多都是比较倾向于这种办法过于简单,不足挂齿的。这里我简单说明一下。

我写这篇文章的目的,不是为了把一个很简单的东西说得有多么高大上,而是将一个我的实际的产品例子拿来分享。这里再安利一下用到了这个技术的 Github 项目 ArtiPub,用的人也不是非常多,现在也只有 1.6k Github Stars,但在实战中确实有效,方法非常简单,而且竞争对手 OpenWrite 也是用这种方式来绕开登录的。其中所有平台 掘金、SF、v2ex、CSDN、开源中国、博客园、知乎、今日头条,都被这种方法绕开了,都是用 Cookie 的方式!不知道有不有相关的大佬会看到这篇文章回去升级登录验证方式的,例如用 JWT。

https://github.com/crawlab-team/artipub

我看了一下数据,文章阅读量到目前只有 65 个,也就是说 1.3k 从 v2 点进来的人,有多少人是真正看了文章而评论的呢?如果只是为了娱乐,我可以当然一笑了之,如果是被没看懂的大佬们误导,就有点得不偿失了。
tikazyq
2020-02-08 18:50:01 +08:00
@godoway 为啥答非所问?
tikazyq
2020-02-08 18:50:19 +08:00
@zhw2590582 请尝试小学生写作试试
tikazyq
2020-02-08 18:50:54 +08:00
@matsuijurina 可爱在哪一点?;)
t6attack
2020-02-08 18:56:19 +08:00
我自己攒的所有爬虫,凡是需要登录的,都是手动登录拿的 cookie。然后把拿到的 cookie 嵌入项目。这和验证码无关,只是觉得写“自动登录”多此一举。
我也是第一次听说,这是绕过验证码的手段?!

人家验证码是防这个的嘛?
注册验证码 防的是 注册机、登录验证码 防的是 密码暴破,谁防你登录后采集啦?
tikazyq
2020-02-08 19:08:03 +08:00
@t6attack 哪里写了自动登录这几个字的?
ipwx
2020-02-08 19:11:19 +08:00
@tikazyq 你也不要光顾着嘲笑楼下嘲笑你的列位。这里问题的核心在于,有没有维护爬虫运行“运营成本”。

你如果一个公司,可以雇人专门手输验证码,Okay 这不是问题。但是楼下多少人是给公司做项目要输验证码的?很多个人项目之所以写爬虫,不就是为了付出一点开发成本(程序员个人的空闲时间),换取之后完全零运营成本么?所以绕过验证码对于这些场景是不可容忍的。

至于你说验证码太难,没法攻破怎么办?很简单,不写程序了,退回人肉操作。连爬虫都不写了,反正是个人项目嘛。
ipwx
2020-02-08 19:12:11 +08:00
@tikazyq 对了,其实不说个人项目,如果你接的是爬虫外包,金主爸爸不接受手输验证码,那也没辙啊~
tikazyq
2020-02-08 19:16:06 +08:00
@ipwx 这里的运营成本我理解的是管理爬虫的维护成本。如果是暴力破解验证码,算法一换立马凉凉。相反,如果是采用绕开的方式就可以有效绕开登录,何乐而不为呢,我觉得这是目前为止最简单花费最小的方式。咱们程序员都懒人,既然这样,为什么要亲自造火箭呢?
ipwx
2020-02-08 19:44:29 +08:00
@tikazyq 算法换的慢啊~ 开发验证码的程序员也是懒人哟。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642950

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX