绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
爬虫漫游指南:聊聊极验(Geetest)
2019-12-16 17:58:03

聊聊极验(Geetest)

极验在中国的验证码市场可谓是鼎鼎大名,我甚至见过一些人,一看见滑块点选样式的验证码就说是极验,哪怕图片上印着网易易盾4个大字。由此见得,极验赢得了“席梦思”一般的江湖地位。(18岁以前,我一直以为“席梦思”==“床垫”,直到有一天我走进了家具市场。)

上至政务类网站国家企业信用信息公示系统,下至娱乐类网站斗鱼战旗龙珠,都可以看到极验的身影。于是,如何绕过极验自然成为了许多爬虫小伙伴不得不面对的问题。本文就来聊一聊,爬虫遇到用极验的网站,该如何是好。

绕过极验的3种方法

以2代极验滑块为例,绕过它无非就是这样的步骤

抓包,了解请求流程

打断点调试JS,逆向分析

还原图片,识别缺口

模拟滑动轨迹

构造请求,获取validate

按照常理,接下来我就要一步步详细阐述各个步骤的具体实现方法,做一个2代极验破解教程,但我偏不,bite me.

聊这些技术细节的话,一是会触犯不少人的利益,二是指不定还律师函警告,我可不希望被抓走的时候大喊:别抓我,我是逆向工程师。

所以折中一下,聊一些既能解决问题,又不会被抓的方法。

① Selenium等浏览器自动工具

对于一些小规模的数据抓取任务,比如苦逼大学生毕业设计时候遇上了极验的悲剧情况,可以采用selenium或者puppeteer等自动化工具,来手动打掉它的验证码。具体操作如下

用代码模拟极验出现之前的请求,比如一些cookie的获取,和其他参数的构建;

带上极验的gt、challenge参数,用puppeteer把验证码弹到你面前,手动把它滑过去或者点过去,得到validate;

带着你的validate,放心大胆的去抓数据吧。

有灵性的同学想必已经悟到了,这种方法就是把爬虫中的验证码部分单独剥离出来,人工完成,其他部分还是让爬虫自顾自的跑。你只要负责坐在电脑前,不停的拖验证码就行了,你打码越快,爬虫就跑的越快。

② 打电话,摇人

破解极验,是能挣钱的,能挣钱的事,永远不怕找不到人做。正规一点的,网上大大小小的打码平台也有不少,不正规点的,道上也有几个兄弟接这个活的,可能还比各个平台便宜不少。

但是今年以来,我不止一次碰到打码平台跑路了,官网挂掉,客服失踪,音讯全无的那种。这类的服务总有一丝丝灰色的感觉,要是再撞上诸如南山必胜客这样的律师团队,倒闭是必然的。

方法①呢太费力了,大规模部署是不可能的,方法②呢费钱还费心,连大平台都不能保证寿比南山,遑论一些接私活的小老弟了。所以我近采用的都是方法③。

③ 2captcha

2captcha也是个打码平台。

嗯???

别别别,大哥把你的40米大刀收起来,听我说完动手不迟。

首先,2captcha是个国外的平台,国内相关政策再怎么变化也不影响他提供服务,多的不说,想想为什么CL1024到现在都绿树长青。

另外,国外打码平台提供极验服务的凤毛麟角,挖到这么一家的真的不容易。

后,也是重要的,它!不!贵!

2captcha使用教程

上2captcha.com注册充值这些就不说了,感谢马云爸爸,alipay已经是个世界通用的单词了,不用去折腾VISA,万事达这些鬼东西。

充值完成后,会获得一个API KEY,就是之后调用接口的凭证,不能给别人看到哟。

根据文档,我们只需要发送这样一个GET请求就能让2captcha帮我们打码了:

https://2captcha.com/in.php?

key=API KEY&

method=geetest&

gt=f2ae6cadcf7886856696502e1d55e00c&

challenge=43b0420ea886ddce2c5a44487b7487f0&

pageurl=你看到极验的url&

api_server=api-na.geetest.com

1

2

3

4

5

6

7

解释一下这些参数:

key: 刚才的API KEY

method: geetest,就是极验,这个网站的拳头产品是谷歌的CAPTCHA,和其他各种国外的验证码,所以需要选择一个验证码类型

gt: 极验参数,稍后细讲

challenge: 极验参数,稍后细讲

pageurl: 上面说了

api_server: 我也不知道这个参数干嘛用的,文档说非必须参数,但不填就报错,所以一起塞进请求吧

完后,得到的响应是这样的

OK|62818768647

1

OK就是告诉你请求已接收,后面那个就是请求id,过会儿带着这个id去领结果就行了。2captcha的工人们就开始吭哧吭哧的帮你打码了。sleep一小会儿之后,再次发送一个GET请求过去

https://2captcha.com/res.php?

key=API KEY&

action=get&

id=62818768647

1

2

3

4

就能拿到熟悉而又亲爱的validate了:

OK|{

"geetest_challenge":"43b0420ea886ddce2c5a44487b7487f0m8",

"geetest_validate":"771fc88a865a78d5fe198da9efa8ddbc",

"geetest_seccode":"771fc88a865a78d5fe198da9efa8ddbcjordan"

}

1

2

3

4

5

拿到这些参数之后,接下来就可以去你想爬的网站为所欲为了。

附:gt和challenge参数的获取

容我找一家国外的网站举例,风险小一点。

https://www.whitepages.com/distil_r_captcha.html?requestId=ef4b3d08-551e-4655-bb39-555c7d7da878&httpReferrer=%2Fdistil_r_captcha.html

gt参数

极验的gt参数是固定的,和你在2captcha持有的API KEY基本上是一个道理,随便找个有gt参数的请求,复制出来就行了。

challenge参数

challenge参数才是关键所在。每个用极验的网站都有一个专门的链接用于更新challenge参数,比如这个whitepages就是:

https://www.whitepages.com/distil_r_captcha_challenge

抓包找到这个请求,然后重放请求。注意!一定要重放请求再次获取,你抓包抓到的challenge参数已经没有用了!

重放后,得到如下响应

43b0420ea886ddce2c5a44487b7487f0;zh-cn;

1

把你需要的东西复制出来,完事儿~

————————————————

版权声明:本文为CSDN博主「Caaacy_YU」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/shayuchaor/article/details/103540551

分享好友

分享这个小栈给你的朋友们,一起进步吧。

网络、数据安全
创建时间:2019-11-27 14:29:45
密码算法对数据进行主动保护,信息存储手段对数据进行主动防护
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • unnamed person1
    栈主

小栈成员

查看更多
  • pswyjz
  • 得一技术
  • xiaojun63
  • ?
戳我,来吐槽~