reCaptcha最最基础的协议提交分析(不会提交的看这里)
很多刚刚学语言刚刚学爬虫的新人连POST都不知道是什么,
但是却要挑战地球最强验证码reCaptcha。
我们以这个网站为例:https://www.gia.edu/report-check?reportno=7328756202
首先假设你已经会调用接口生成g-recaptcha-response了
就是下面这一串:
03AEkXODD5JEeoOMUbZf-KgVnarLnGCtt-sTAOZNUH7-tb7LVkS5vHmKoOT7FsP295t6fKVRrZs7UnudWy4mB4vzkVLaWFu_fJ6onxlhwtzELECYFrobIQTRFfw_F_JQgHOolAck7Hs09j0l-SLtDh5Eh3DtZig31Noh_bkdcNrdzD83Mc2pTpUh01afQ-eHWVsBN7h504iG56XMde754Hqynn6y8CIdnYWC-a1SGXUXeFS0tBUAyivWkHH1gjzXjYL1FlD2hxB-bQyjITD9ODQ29-pXv3fAKw4JxB9ASfIDZo2j8KQTbrTBQ1RwaPXxVl1Qv3rpvJccTTWRo0CGsV9_vfzTsTFXEoGvATewr0C0PauY7rUB9Z6trHksrsSHvPHQtD3FpFr1Z678J1qo6WTNL0w6bM8Oz6kKOUsdsYkw4DsC_sI_6WQv622FOQkYJz3CfL9F9Gs0cQgNb0A7Z8EhXgFLu4yG1fS5UDEmwM-SFdrH8beuGqYwcqhGzM1dYhnLC8y3JJpoc61rFIZzAqGUlE1r9NTgHzzw
如果还不会,请先详细阅读基础教程:
网站验证码是这样的:
很明显,识别之后点击SUBMIT按钮,就会将验证码识别结果,
也就是上一步生成的token值(g-recaptcha-response)提交给网站
那倒底提交到哪里,就需要我们打开浏览器调试
打开浏览器,按F12,再点击Network,就可以看到所有发送的网络请求
这时候,我们去点击验证码提交按钮,注意网络请求里面就出现了一个POST请求,
如下图所示:
点开这个请求,首先他是POST请求,然后我们再点开Payload选项卡,这里就是所有提交的内容
注意看里面,就有一个参数名叫grecaptcharesponse,对应的值正好是刚才我们提到的那串03A开头的字符串,这个就是验证码的识别结果,这里就是提交给网站进行验证。
所以,我们只需要写代码,实现一个一模一样的提交过程就可以了
以Python为例:
以下代码未验证,仅做提交例子供参考
import requests
data = {
"grecaptcharesponse": "03AEkXODD5JEeoOMUbZf-KgVnarLnGCtt-sTAOZNUH7-tb7LVkS5vHmKoOT7FsP295t6fKVRrZs7UnudWy4mB4vzkVLaWFu_fJ6onxlhwtzELECYFrobIQTRFfw_F_JQgHOolAck7Hs09j0l-SLtDh5Eh3DtZig31Noh_bkdcNrdzD83Mc2pTpUh01afQ-eHWVsBN7h504iG56XMde754Hqynn6y8CIdnYWC-a1SGXUXeFS0tBUAyivWkHH1gjzXjYL1FlD2hxB-bQyjITD9ODQ29-pXv3fAKw4JxB9ASfIDZo2j8KQTbrTBQ1RwaPXxVl1Qv3rpvJccTTWRo0CGsV9_vfzTsTFXEoGvATewr0C0PauY7rUB9Z6trHksrsSHvPHQtD3FpFr1Z678J1qo6WTNL0w6bM8Oz6kKOUsdsYkw4DsC_sI_6WQv622FOQkYJz3CfL9F9Gs0cQgNb0A7Z8EhXgFLu4yG1fS5UDEmwM-SFdrH8beuGqYwcqhGzM1dYhnLC8y3JJpoc61rFIZzAqGUlE1r9NTgHzzw",
"recaptcha_src": 0,
"reportno": "undefined"
}
url = "https://data.gia.edu/RDWB/VerifyRecaptcha"
result = requests.post(url, data=data).text
print(result)
一般来说,如果提交正常,会返回正确的结果,提交错误,则返回错误的结果
但是上面的例子肯定是错误的,因为网站在提交的可能会验证包括cookies等内容。
但大致提交和分析原理就是这样。
如果您现在还不知道如何获取cookies,以及如何模拟headers的话,
建议您先学习爬虫入门基础知识。
或者直接使用我们的模拟点击插件: