爬虫验证码分析

声明:

该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关

本文只做简单的验证码分析,不涉及扣代码等逆向

一、常见得验证码平台
  1. 易盾:https://dun.163.com/product/captcha?from=baiduP2_YZM_CP4183
  2. 顶象:https://www.dingxiang-inc.com/business/captcha
  3. 同盾:https://xiaodun.com/onlineExperience/slidingPuzzle
  4. 数美:https://www.ishumei.com/
  5. VAPTCHA:https://www.vaptcha.com/?lang=cn&from=0
  6. 极验:https://www.geetest.com/show
  7. 腾讯:https://007.qq.com/
  8. 阿里:https://we.51job.com/api/job/search-pc?api_key=51job&timestamp=1694777773&keyword=java&searchType=2&function=&industry=&jobArea=000000&jobArea2=&landmark=&metro=&salary=&workYear=&degree=&companyType=&companySize=&jobType=&issueDate=&sortType=0&pageNum=2&requestId=f6e64a68f0c18cd69f676f36a687a233&pageSize=20&source=1&accountId=&pageCode=sou%7Csou%7Csoulb
  9. 谷歌:https://www.google.com/recaptcha/api2/demo,专业破谷歌https://www.yescaptcha.com/auth/register
二、验证码验证过程
  1. 核心步骤
  • 从服务器随机取一张图片,并对图片上的随机x、y坐标和宽高一块区域抠图;
  • 根据步骤一的坐标和宽高,使用二维数组保存原图上抠图区域的像素点坐标;
  • 根据步骤二的坐标点,对原图的抠图区域的颜色进行处理。
  • 完成以上步骤之后得到两张图(扣下来的方块图,带有抠图区域阴影的原图),将这两张图和抠图区域的y坐标传到前台,前端在移动方块验证时,将移动后的x坐标传递到后台与原来的x坐标作比较,如果在阈值内则验证通过。
  1. 请求验证的步骤
  • 前台向后台发起请求,后台随机一张图片做处理将处理完的两张图片的base64,抠图y坐标和token(token为后台缓存验证码的唯一token,可以用缓存和分布式缓存)返回给前台。
  • 前台滑动图片将x坐标和token作为参数请求后台验证,服务器根据token取出x坐标与参数的x进行比较。
  1. 突破方式
  • 人工智能机器学习,确定滑块位置
  • 通过完整图片与缺失滑块的图片进行像素对比,确定滑块位置
  • 花钱找人识别,云码:https://www.jfbym.com/
  • 一般同一个平台同一种验证码突破之后,遇到使用的网站,都可以使用
三、极验验证码分析

极验4代demo:https://www.geetest.com/adaptive-captcha-demo
极验3代demo:https://www.geetest.com/demo/

  1. 打开极验4代demo网址,F12打开调试工具,刷新页面,点击滑块验证方式,找到gcaptcha4.geetest.com/load请求,响应结果会发现bg、slice,其中bg是缺块大图,slice是小图
    在这里插入图片描述
  2. 分析gcaptcha4.geetest.com/load请求,在请求中需要找到captcha_id,搜索captcha_id字段的值,会发现gcaptcha4.geetest.com/verify请求中已经返回,所以在请求gcaptcha4.geetest.com/load之前要先去请求gcaptcha4.geetest.com/verify
    在这里插入图片描述在这里插入图片描述
  3. 分析gcaptcha4.geetest.com/verify,会发现参数中的w参数,这个参数需要通过扣代码获取
    在这里插入图片描述
  4. 验证滑块请求gcaptcha4.geetest.com/verify,验证失败,在响应字段result值是fail;验证成功,在响应字段result值是success,后续请求会使用返回结果中的token
    在这里插入图片描述在这里插入图片描述
四、易盾验证码分析
  1. 打开易盾网址https://dun.163.com/trial/jigsaw,F12打开调试工具,刷新页面,找到api/v3/get请求,响应结果会发现bg、front,其中bg是缺口大图,front是缺块小图
    在这里插入图片描述
  2. 分析api/v3/get请求,在请求中会找到acToken、fp、cb,cb和fp参数没有太特殊的地方,断点直接扣代码就行,主要分析acToken参数
    在这里插入图片描述
  3. 点击Response旁边的Initiator,搜索acToken,找到acToken赋值的地方,全部打断点
    在这里插入图片描述
  4. 刷新验证码图片会进入其中一个断点,分析断点会发现,acToken是回调函数参数C6,鼠标悬浮到wP[m1(0x657)],找到函数位置
    在这里插入图片描述
  5. 找到函数在函数顶部打断点,点击跳过当前函数执行,分析代码,会发现Ky1(0x698)[‘getToken’]函数的调用,在Ky1(0x698)[‘getToken’]代码行断点,分析Ky1(0x698)[‘getToken’],会发现A[‘acConfig’][‘bid’],这个值是由api/v2/getconf请求返回的
    在这里插入图片描述在这里插入图片描述
  6. 按照刚才找wP[m1(0x657)]函数的方法,找到Ky1(0x698)[‘getToken’]并按照之前的方法分析函数内部代码,遇见函数内部最终函数执行的地方,就找到该函数,大概会经历E._getToken(Z, a, r)、this.ka(E, Z, a, r)、pE({C: u,ma: d}几个函数的调用才能找到acToken生成的地方,分析生成acToken的地方,会发现E里面有三个值r、b、d,其中b是时间戳生成的随机数,d是v3/d请求返回的,这里会发现虽然在最初传了bid参数,但是在最终生成acToken中并没有用到,r是固定值,最后会找到oE(JSONh[397])
    在这里插入图片描述在这里插入图片描述
  7. 这是获取验证码请求大概的一个分析过程,其中依赖了api/v2/getconf、v3/d请求中的响应结果,如果找不到这两个请求,就清除cookie重新刷新页面
  8. 验证滑块请求api/v3/check,这个请求中值得注意的是data、cb参数,这两个参数需要逆向;验证失败响应结果svalidate是空字符串;验证成功validate是有返回结果,后续的请求需要带上验证成功的token
    在这里插入图片描述在这里插入图片描述
  9. 这里还需要注意的一个请求是v3/b,每次刷新验证码都会调用该接口;在扣代码的过程中如遇到某些参数值,可以先去v3/b、api/v2/getconf、v3/d请求看看是不是它们的响应结果
五、顶象验证码分析
  1. 打开顶象网址,F12打开调试工具,刷新页面,点击滑块验证方式,找到/api/a请求,响应结果会发现p1、p2,其中p1是缺口大图,p2是缺块小图
    在这里插入图片描述
  2. 分析/api/a请求,在请求中会找到ak、c,其中ak的值是固定的,搜索下ak的值会发现appid,断点调试会发现ak取的就是appid
    在这里插入图片描述在这里插入图片描述
  3. 点击立即验证,搜ak": 会看到basic-Captcha-js.js,里面有ak赋值的地方,进入该文件,在U处打断点,刷新滑块验证,会进入该断点,会发现k取得就是appid,可以搜索appid得值,会找到appid赋值得地方
    在这里插入图片描述在这里插入图片描述
  4. 至于c的值,是由udid/c1请求生成的,不过这个值固定也可以,请求中有个Param是加密,打断点调试udid/c1请求,会发现Param是由appkey、token等信息加密生成的
    在这里插入图片描述在这里插入图片描述
  5. 验证滑块请求api/v1,这个请求中值得注意的是ac参数,ac是指纹信息、缺口识别信息、轨迹信息生成的,需要扣代码 ;验证失败响应结果success是false,token没值;验证成功success是true,token有值,后续的请求需要带上这个token
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
七、如何区分验证码是哪个平台

区分验证码是哪个平台的,可以F12查看验证码元素绑定的class、id

  1. 网易易盾,元素绑定的class一般带有yidun
    在这里插入图片描述
  2. 顶象,元素绑定的class一般带有dx
    在这里插入图片描述
  3. 极验,元素绑定的class一般带有geetest
    在这里插入图片描述
  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
,从数据采集、人工标注、模型构建、训练和验证的过程,最终构建形成demo演示 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
如果您下载了本程序,但是该程序无法运行,或者您不会部署,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的) 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
在Python中,爬虫验证码处理是指通过代码自动处理网站上的验证码。在进行爬虫时,有些网站为了防止被自动爬取,会设置验证码。处理验证码的目的是为了能够绕过这些验证步骤,从而正常获取网页内容。 针对Python爬虫验证码处理,可以通过以下几种方法进行处理: 1. 手动识别验证码:可以使用第三方库如`pytesseract`或`Pillow`来识别验证码图片中的文字,然后将其输入到验证码输入框中。 2. 验证码识别API:有一些在线的验证码识别服务提供商,可以通过调用他们的API接口来实现验证码的识别。你可以在网上搜索相关的服务提供商并注册账号,然后将验证码图片上传给他们的接口,获取识别结果后再输入到验证码输入框中。 3. 机器学习模型识别:使用机器学习的方法,训练一个模型来自动识别验证码。这需要大量的验证码样本和一定的机器学习知识。 4. 破解验证码算法:有些验证码算法并不复杂,可以通过分析其生成规则,编写代码来破解验证码。但这种方法需要对具体的验证码算法有一定的了解,且可能需要不断跟进验证码算法的变化。 以上是几种常见的Python爬虫验证码处理方法,你可以根据自己的需求和具体情况选择适合的方法来处理验证码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python爬虫四种验证码的解决思路](https://blog.csdn.net/weixin_55154866/article/details/128503790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值