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'])

结果展现: 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年租用阿里云服务器一年多少钱?免费版不要钱,收费版61元起

2024年阿里云服务器一年多少钱?如果是申请试用版云服务器就不需要钱,如果是购买收费版目前最低仅需61元,不同阶段,阿里云所推出的最低价格的云服务器不同,2024年4月份,阿里云服务器的活动价格在再次更新了&…

Ubuntu 20.04.06 PCL C++学习记录(二十一)【切记使用rm * -rf前先确认是否是对应文件夹】

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍:《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,,PCL版本为1.10.0,CMake版本为3.16,测试点云下载地址 学习内容 根据欧几里得距离和需要保持的用户可自定义条件对点进…

8. 托盘图标与菜单

内容概要: 托盘图标的设置与事件 右键菜单的相关操作 窗口组件: 1.组件的属性 组件属性:位置 组件属性:可视 2.组件的事件 窗口_托盘事件-带有参数的事件的使用方法 3.组件的方法 置托盘图标 菜单的操作 1.创建菜单 …

大话设计模式——20.解释器模式(Interpreter Pattern)

简介 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 UML图 应用场景 某种特定类型的问题发生的频率足够多,就可能值得将该问题的各个实例表述为一个简单语言中的句子&#xff0…

关于pandas 无法读取 csv 文件数据的解决方式

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 …

词频统计程序

使用Hadoop MapReduce处理文本文件,Mapper负责将文本分割为单词,然后Reducer对每个单词进行计数,最后将结果写入输出文件。 // 定义WordCount公共类 public class WordCount {// 主入口方法,处理命令行参数public static void m…

C++实现幻方实验

我们这个实验目的是实现大于2的奇数的n阶幻方 根据上述的例子我们可以看到一些规律,显示1放在最上方中间的位置,然后向右上方延申,在达到n这个数字时,停止延申,然后在n的下方开始n1的新一轮延申。明白了原理之后就很容…

羊大师说:“羊奶”,每一滴都值得珍惜

亲爱的读者们,我是羊大师。在无数次探索自然的奥秘和追求健康生活的旅途中,我发现了一种珍贵的液体——羊奶。今天,我要带大家深入了解羊奶,看看它是如何成为餐桌上的超级食品。 1. 羊奶的营养价值 首先,羊奶含有丰富…

财富池指标公式--实用多空博弈买点提示通达信副图指标公式源码

实用多空博弈买点提示通达信副图指标,不含未来函数,信号简单。 当白色多头能量线金叉黄色空方能量线,且出现紫色向上的信号后参考买入是一个较为稳健的买点,也可在白色多头能量线金叉黄色空方能量线时就介入。 配合其它选股指标…

向新而行,企商在线做好“AI+”大文章

文:中国高新技术产业导报 记者 张伟 作为人工智能典型服务商屡获认可,入选第二批北京市通用人工智能产业创新伙伴计划成员;作为唯一上榜的AI算力企业,实力入选中国信通院《2023高质量数字化转型产品及服务全景图(9月…

ubuntu20挂载webdav

WebDAV 是个好东西,尤其是配个自己的 NAS 使用,熟悉以后就再也离不开它啦 sudo apt-get update sudo apt-get install davfs2 上下左右键可以切换到“是”选项 2.创建目录挂载点 sudo mkdir /mnt/webdav 3.配置 davfs2 编辑 davfs2.conf 文件以配置 da…

系统监测工具-tcpdump的使用

一个简单的tcpdump抓包过程。主要抓包观察三次握手,四次挥手的数据包 有两个程序:客户端和服务器两个程序 服务器端的ip地址使用的是回环地址127.0.0.1 端口号使用的是6000 tcpdump -i 指定用哪个网卡等,dstip地址端口指定抓取目的地址…

Linux:gcc

Linux:gcc gcc概述语言发展史gcc的编译过程预处理编译汇编 gcc的链接过程动态库与静态库 gcc概述 GCC(英文全拼:GNU Compiler Collection)是 GNU 工具链的主要组成部分,是一套以 GPL 和 LGPL 许可证发布的程序语言编译…

自定义类型—结构体

目录 1 . 结构体类型的声明 1.1 结构的声明 1.2 结构体变量的创建与初始化 1.3 结构体的特殊声明 1.4 结构体的自引用 2. 结构体内存对齐 2.1 对齐规则 2.2 为什么存在内存对齐 2.3 修改默认对齐数 3. 结构体传参 4.结构体实现位段 4.1 位段的内存分配 1 . 结构体类…

12.C++常用的算法_遍历算法

文章目录 遍历算法1. for_each()代码工程运行结果 2. transform()代码工程运行结果 3. find()代码工程运行结果 遍历算法 1. for_each() 有两种方式&#xff1a; 1.普通函数 2.仿函数 代码工程 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vect…

数据结构之树的性质总结

节点的度&#xff1a;该节点拥有的孩子个数 叶子节点&#xff1a;度为0的节点 层数&#xff1a;根节点为第一层&#xff0c;根的子节点为第二层&#xff0c;以此类推 所有树的性质&#xff1a;所有节点的总度数等于节点数减一 完全m叉树性质 完全m 叉树&#xff0c;节点的…

【Canvas与艺术】绘制磨砂黄铜材质Premium Quality徽章

【关键点】 渐变色的使用、斜纹的实现、底图的寻觅 【成果图】 ​​​​​​​ 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><tit…

若依Vue3:新一代前后端分离权限管理系统

随着技术的不断进步&#xff0c;前后端分离的开发模式逐渐成为主流&#xff0c;特别是在构建权限管理系统时。在这样的背景下&#xff0c;若依Vue3应运而生&#xff0c;作为基于Spring Boot、Spring Security、JWT、Vue3、Vite和Element Plus的全新解决方案&#xff0c;它在技术…

Ubuntu20.04安装ROS过程记录以及常见报错处理

sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’ sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-…

linux启动流程(s3c2400)

概述 大致流程&#xff1a;内核&#xff08;kernel&#xff09;都是由bootloader程序引导启动的&#xff0c;所以我们应该先烧进去bootloader程序。然后可以通过保存的内核代码或者通过远程连接&#xff08;nfs/tftp&#xff09;的主机下载再运行&#xff0c;再挂载根文件系统。…