Python实现滑块验证码识别,最简单的一种,没有任何加密

网址链接:衣丰 & 2010-聚衣网(juyi5.cn) - 常熟市聚衣网,聚衣网女装,江苏省女装批发,苏州市女装批发,常熟市女装批发,网销女装一件代发,全国最低价

平时采集数据,频率过快,出现反爬:

        IP/账号/验证码/

需要登陆才能看到手机号何微信号

打开开发者工具,刷新后点击显示电话,可以发现包,里面有数据

获取数据的包的链接:https://www.juyi5.cn/ajax/supplier/get_contact_info

获取数据包需要的参数:

user_id:是不同商家的标志 

auth_key:是下面获取验证码链接传来的key值

auth_token:是识别验证码链接返回的值

 

多次刷新,会出现验证码

 

如何自动识别验证码:

1.抓包分析过程

        -出现验证码链接:

               get: https://captcha.jybc.com.cn/api/captcha/get?type=2&site=juyi5&_=1712671270045 

               数据包中

                -img:滑块图片

                -key:会用到check包中的载荷中

                -slider:完整有缺口图片

        -识别验证码链接:

                post:https://captcha.jybc.com.cn/api/captcha/check(识别操作)

                载荷中

                -key:从验证码链接返回的参数中获得

                -type:2(固定)验证码类型

                -value:74(滑动的距离)

                

 

第一个data包是滑块,第二个data包是验证码图,故意滑动错误,出现check包

现在目标明确,为了通过验证码,必须获得key值和value值,value值可以获得验证码图片,经过第三方库获得。

具体代码:

import base64
import requests
import ddddocr #验证码识别# 验证码链接
url = 'https://captcha.jybc.com.cn/api/captcha/get?type=2&site=juyi5&_=1712671270046'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
response = requests.get(url=url,headers=headers)
json_data = response.json()
img = json_data['data']['img'].split(',')[-1]#滑块图片base64值
slider = json_data['data']['slider'].split(',')[-1]# 有缺口图片base64值
key = json_data['data']['key'] # key值
yzm = base64.b64decode(img)  # 获取滑块图片二进制数据
yzm_ = base64.b64decode(slider) #获取有缺口图片二进制数据
'''识别缺口位置'''
det = ddddocr.DdddOcr(det=False,ocr=False)
res = det.slide_match(yzm,yzm_,simple_target=True)  # 返回的第一个是value值
value = res['target'][0]'''验证识别'''
link = 'https://captcha.jybc.com.cn/api/captcha/check'
data = {'key': key,'type': '2','value': value,
}post_data = requests.post(url=link,data=data,headers=headers).json()
print(res)
print(post_data)

 结果展现:

返回一个token值,获取数据时可以传进去。 

现在获得了所有数据包需要的参数,那么进行数据采集吧!

完整代码:

import base64
import requests
import ddddocr #验证码识别# 验证码链接
url = 'https://captcha.jybc.com.cn/api/captcha/get?type=2&site=juyi5&_=1712671270046'
headers = {"Cookie":"UM_distinctid=18ec3225db1698-07895aa196f7bf-26001951-144000-18ec3225db2a0b; CNZZDATA1281257008=1962599005-1712670793-%7C1712670837; login_captcha_word=81065f8c25a8c7a1e3dc118575253916; login_captcha_time=1712670843715; login_captcha_image=%3Cimg+id%3D%22captcha%22+src%3D%22%2Fimages%2Fcaptcha%2F1712670843715.png%22+width%3D%2280%22+height%3D%2230%22+style%3D%22border%3A0%3B%22+%2F%3E; login_captcha_hash=759ec17249f7036e06e84123913624fd; user_phash=c71f3ad136b089ae6595129d9f1a3d34; daily_login=1; user_username=18720180853%40juyi5.cn; user_user_id=3698246; user_type=0; user_login_type=passport; user_login_time=2024-04-09+21%3A55%3A02; user_login_ip=36.248.235.8; user_is_user_login=1; user_hash=fcef63a4b7469334801fd1e6ba7566cb; k3cn=dXNlcl9pZD0zNjk4MjQ2JnR5cGU9MCZ1c2VybmFtZT0xODcyMDE4MDg1M0BqdXlpNS5jbiZ0PTE3MTI2NzA5MDImaGFzaD0yODc5MWVhOTQ2M2Q0MjYwMjk1ZDFkZWJiMzFhY2U5Yg%3D%3D; CNZZDATA1281257007=967069251-1712670902-%7C1712671271; CNZZDATA1278289041=1554277160-1712670793-%7C1712671271",'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
response = requests.get(url=url,headers=headers)
json_data = response.json()
img = json_data['data']['img'].split(',')[-1]#滑块图片base64值
slider = json_data['data']['slider'].split(',')[-1]# 有缺口图片base64值
key = json_data['data']['key'] # key值
yzm = base64.b64decode(img)  # 获取滑块图片二进制数据
yzm_ = base64.b64decode(slider) #获取有缺口图片二进制数据
'''识别缺口位置'''
det = ddddocr.DdddOcr(det=False,ocr=False)
res = det.slide_match(yzm,yzm_,simple_target=True)  # 返回的第一个是value值
value = res['target'][0]'''验证识别'''
link = 'https://captcha.jybc.com.cn/api/captcha/check'
data = {'key': key,'type': '2','value': value,
}post_data = requests.post(url=link,data=data,headers=headers).json()print(res)
print(post_data)'''请求数据链接'''
data_url = 'https://www.juyi5.cn/ajax/supplier/get_contact_info'
data2 = {'user_id': '3424211','auth_key': key,'auth_token': post_data['data']['token'],
}
res2 = requests.post(url=data_url,data=data2,headers=headers).json()  #由于是登录才能获取数据,因此headers中还要加上cookie
print(res2)
print(res2['data'])

结果展现: 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式面试题

概述 设计模式分类 创建型模式 用于描述“怎样创建对象”,主要特点是“将对象的创建与使用分离”。使用者不需要官族对象创建的细节。结构型模式 用于描述如何将类或对象按照某种布局组成更大的结构。行为型模式 用于描述类或对象之间怎样相互协作共同完成单个对象…

Domain Admin:方便快捷的图形化域名和SSL证书监测平台

Domain Admin:一目了然,一键掌握,您的全方位图形化域名与SSL证书智能管家!- 精选真开源,释放新价值。 概览 Domain Admin是一个基于Python Vue3.js 技术栈实现的域名和SSL证书监测平台,旨在为用户打造一个…

7-17 爬动的蠕虫

题目链接&#xff1a;7-17 爬动的蠕虫 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {unsigned int n, u, d;unsigned int minute, high;if (scanf("%d %d %d", &n, &u, &d) ! 3) {retur…

有关栈的算法

例题一 解法&#xff08;栈&#xff09;&#xff1a; 算法思路&#xff1a; 本题极像我们玩过的「开⼼消消乐」游戏&#xff0c;仔细观察消除过程&#xff0c;可以发现本题与我们之前做过的「括号匹配」问题是类似的。当前元素是否被消除&#xff0c;需要知道上⼀个元素的信息…

C/C++如何快速学习?少走3年弯路

于我而言&#xff0c;最开始学习就是 C&#xff0c;除了计算机专业&#xff0c;其他专业可能学习的第一门编程语言为 C 语言&#xff0c;还是谭浩强爷爷那本&#xff0c;当时想着有点 C 基础&#xff0c;无外乎就是 C 语言的升级版&#xff0c;于是开启了 C 的路程。 语言这个…

《深入Linux内核架构》第4章 进程虚拟内存(1)

目录 4.1 简介 4.2 进程虚拟地址空间 4.2.1 进程地址空间分布 4.2.2 建立布局 第3章讲了两点&#xff1a;物理内存的管理&#xff0c;内核虚拟地址管理。 本章讲&#xff1a;用户进程的虚拟地址空间管理。 4.1 简介 一个进程的整个虚拟地址空间&#xff08;0-3G&#xf…

JKTECH柔性振动盘柔性上料机

柔性供料器&#xff1a;用途广泛与好处显著 在现代工业生产中&#xff0c;随着技术的不断进步和市场的多样化需求&#xff0c;对物料供应系统的要求也日益提高。柔性供料器&#xff0c;作为一种新型的物料供应装置&#xff0c;其用途广泛且好处显著&#xff0c;正逐渐受到各行…

苍穹外卖亮点再梳理 ||

一、项目整体亮点&#xff1a; 【注&#xff1a;基于每个亮点&#xff0c;均有整理的相关知识&#xff0c;可在博客中查看】 1.数据库的设计采用RBAC&#xff08;基于角色访问控制&#xff09;的权限设计。 RBAC将权限授予角色&#xff0c;然后将用户分配给角色&#xff0c;…

算法——倍增

. - 力扣&#xff08;LeetCode&#xff09; 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径…

指针 基础知识

本笔记为观看56 指针-指针的定义和使用_哔哩哔哩_bilibili后的学习笔记 指针的定义和使用 1、定义指针 int main () {//1、定义指针int a 10;//指针定义的语法&#xff1a; 数据类型 * 指针变量名&#xff1b;int * p;//让指针记录变量a的地址p &a; //& 为取址符cou…

电商技术揭秘十六:电商中的实时分析与决策支持系统

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

如何部署上线项目

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 多环境多环境分类前端多环境实战请求地址启动方式项目配置 后端多环境实战 项目部署原始部署前端…

【项目】棋海争锋

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 项目介绍 WebSocket介绍 使用 项目创建 数据库设计 用户模块 登录接口 注册接口 获取用户信息接口 匹配模块 …

【Bing】开启代理后使用 Bing 搜索引擎总是: 没有与此相关的结果

【Bing】开启代理后使用 Bing 搜索引擎总是: 没有与此相关的结果 1 问题描述2 解决方法2.1 修改代理规则2.1.1 Clash Verge2.1.2 Clash Verge Rev2.1.3 V2RayN 1 问题描述 当我开了代理访问 Bing 时&#xff0c;经常会出现下面的页面: 2 解决方法 我所知的有三种方法: 手动关…

关于JVM-三色标记算法剖析

相关系列 深入理解JVM垃圾收集器-CSDN博客 深入理解JVM垃圾收集算法-CSDN博客 深入理解jvm执行引擎-CSDN博客 jvm优化原则-CSDN博客 jvm流程图-CSDN博客 三色标记产生的原因&#xff1f; 在并发标记的过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;对象间的引…

使用Matplotlib绘制打断图Broken Axis

使用Matplotlib绘制打断坐标轴Broken Axis 对于一批存在离群点的或者两极分化的数据&#xff0c;为了突出其值域差异&#xff0c;时常需要用到打断坐标轴效果。 使用Matplotlib绘制的效果如下&#xff1a; 对于同样的数据&#xff0c;使用brokenaxes库的绘制效果如下&#x…

Ubuntu20.04安装和编译运行lidar_align来联合标定lidar与imu的外参

硬件&#xff1a;树霉派4b 1、下载并安装lidar_align mkdir -p lidar_align/src cd lidar_align/src git clone https://github.com/ethz-asl/lidar_align.git 将 lidar_align/src/lidar_align/NLOPTConfig.cmake 文件移动到 lidar_align/src/ 下(与lidar_align同级) NLOP…

ShardingSphere-ShardingSphere读写分离和数据脱敏

文章目录 一、读写分离1.1 读写分离1.2 读写分离应用方案1.3 分表+读写分离1.4 分库分表+读写分离二、ShardingSphere-JDBC读写分离2.1 创建SpringBoot并添加依赖2.2 创建实体类2.3 创建mapper2.4 配置读写分离2.5 测试测试插入数据测试读测试事务一致性测试负载均衡一、读写分…

vue3+echarts:echarts地图打点显示的样式

colorStops是打点的颜色和呼吸灯、label为show是打点是否显示数据、rich里cnNum是自定义的过滤模板用来改写显示数据的样式 series: [{type: "effectScatter",coordinateSystem: "geo",rippleEffect: {brushType: "stroke",},showEffectOn: &quo…

【H3C】开启web管理页面H3C S5120V2 Series

配置步骤 1.创建对应vlan并放行通过 2.添加vlanfi的ip地址 3.开启http和https的服务 4.创建用户&#xff0c;配置密码&#xff0c;配置服务类型&#xff0c;赋予权限 假设终端连接在交换机的g1/0/1口 假设终端的ip地址为(Ubuntu)&#xff1a;192.168.200.11 /24 假设交换机vlan…