〖Python网络爬虫实战㊸〗- 极验滑块介绍(五)

  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
  • python项目实战

    Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明
  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战㊷〗- 极验滑块介绍(四)

极验验证码

目前,许多网站采取各种各样的措施来反爬虫,其中一个措施便是使用验证码。随着技术的发展,验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码,后来加入了英文字母和混淆曲线。有的网站还可能看到中文字符的验证码,这使得识别愈发困难。我们今天来介绍极验验证码。

实战案例——某网站

我们前几篇文章,和大家详细介绍了一下极验滑块逆向的过程,最近,有粉丝让我来出个实战案例,由于某些特殊原因,本文的源码就不展示了,接下来,我以这个👉👉👉网站👈👈👈为例,和大家介绍。


严正声明:本文仅供交流学习,勿用于非法用途


实战分析

我们首先打开这个网站,我们看到是这样的,我们打开开发者工具,刷新页面,我们这里会发现,和我们在官网是差不多的,只有一些细微的差别,比如说,接口地址变了。

那我们接下来开始写代码,这里面调用的函数,我在之前的文章发过,大家可以自行翻看。

实战代码

获取gt,challenge

我们第一步,看到是拿到gt,challenge,我们可以看到这样的数据接口,我们直接写代码。

session = requests.session()url = "https://passport.woshipm.com/sys/StartCaptchaServlet.html"headers = {"Referer":"https://passport.woshipm.com/user/verifyCodeLogin.html","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62"}response = session.get(url, headers=headers)gt = re.findall('"gt":"(.*?)"',response.text)[0]
challenge = re.findall('"challenge":"(.*?)"',response.text)[0]

我们到这里,就拿到了gt,challenge,我们接下来,就是获取第一次的S。

获取第一次的S

我们前面讲过,这个S在后面请求中,会发生变化,我们这里可以不用管他,但是,要模拟请求。

timetemp2 = int(time.time()*1000)
url2 = "https://api.geetest.com/get.php"# 初始化值
params2 = {"gt": gt,"challenge": challenge,"lang": "zh-cn","pt": 0,"client_type": "web","w":"","callback": f"geetest_{timetemp2}"
}
response2 = session.get(url2, params=params2)S = re.findall('"s": "(.*?)"',response2.text)[0]## C是固定的
# print("S的值为:",S)

我们这里的前两个W的值可以置空,这个和官网不一样,就不用我们去扣前两个W的代码了。

获取滑块类型

我们接下来,就是去获取滑块类型,我们很容易看到这样的接口:

这里很简单,在实战的过程中,这里不回去,会被标识为爬虫程序。

timetemp3 = int(time.time()*1000)
url3 = "https://api.geevisit.com/ajax.php"
params3 = {"gt": gt,"challenge": challenge,"lang": "zh-cn","pt": 0,"client_type": "web","w": "","callback": f"geetest_{timetemp3}"
}
response3 = session.get(url3,params=params3)

获取滑块图片

我们这里接下来就是获取滑块图片,我们主要在这里获取滑块距离和滑块轨迹。


timetemp4 = int(time.time()*1000)
url4 = "https://api.geevisit.com/get.php?"
params4 = {"is_next": "true","type": "slide3","gt": gt,"challenge": challenge,"lang": "zh-cn","https": "false","protocol": "https://","offline": "false","product": "embed","api_server": "api.geevisit.com","isPC": "true","autoReset": "true","width": "100%","callback": f"geetest_{timetemp4}"
}
response4 = session.get(url4, params=params4)
str_data =  re.findall(r'\((.*?)\)', response4.text)[0]
res =  json.loads(str_data)
home_url = "https://static.geetest.com/"
new_challenge = res['challenge']
bg =home_url+ res['bg']
fullbg = home_url+res['fullbg']
SS = res['s']## C是固定的 取这里的S
sliceImg = home_url+res['slice']
# print("缺口图片:",bg,"\n背景图:",fullbg,"滑块:",sliceImg)
# print("S的值为:",SS)
# print('成功获取到new_challenge',new_challenge)
def save(bg,fullbg):content1 = requests.get(bg).contentwith open('./乱序缺口背景图.png', mode='wb') as f:f.write(content1)# print('乱序缺口背景图.png', 'successful')content2 = requests.get(fullbg).contentwith open('./乱序背景图.png', mode='wb') as f:f.write(content2)# print('乱序背景图.png', 'successful')content3 = requests.get(sliceImg).contentwith open('./slice.png', mode='wb') as f:f.write(content3)
save(bg,fullbg)
restore_picture()
distance = get_gap('./缺口背景图片.png','./背景图片.png')
# print(distance)
restore_picture()是调用了图片还原函数,get_gap()是获取滑块缺口距离的函数。这两个我在前面的文章都有发,可以直接复制使用。

我们在这里获取到了新的challenge和S,我们在最后一个W的加密要用到。

获取validate

我们只要成功逆向出最后的W,我们就能拿到validate,这个W怎么生成的可以看上一篇文章,由于,我在js中把这个gt写固定值,就没有传入这个值了。还是很简单的。


with open('w3.js','r', encoding='utf-8') as f:js = f.read()trace = get_slide_track(distance)
distance_t = trace[-1][0]
passtime = trace[-1][-1]
w = execjs.compile(js).call('get_w', distance, new_challenge, trace, SS, passtime)
# print(w)timetemp5 = int(time.time() * 1000)
url5 = "https://api.geevisit.com/ajax.php"
params5 = {"gt": gt,"challenge": new_challenge,"lang": "zh-cn","$_BCX": 0,"client_type": "web","w": w,"callback": f"geetest_{timetemp5}"
}response5 = session.get(url5,  params=params5)
# print(response5.text)validate = re.findall('"validate": "(.*?)"',response5.text)[0]
# print(validate)

这里的trace是滑块轨迹,至于怎么来的,看我之前的文章,发过。passtime是滑块移动的时间。最后我们这里正常的化,会得到一个validate。接下来,我们就模拟请求验证码。

模拟请求验证码

我们会看到一个发送手机验证码的接口,这里肯定是传入了我们的手机号和刚刚得到的validate。

这个代码就很简单了,到这里,我们整个案例到这里就结束了。

send_timetemp= int(time.time() * 1000)
send_url = "https://passport.woshipm.com/sys/VerifyLoginServlet.html"
send_params = {'phone': 手机号,'geetest_challenge':new_challenge,'geetest_validate': validate,'geetest_seccode': f'{validate}|jordan',
}
send_res = requests.post(url= send_url,headers=headers, params=send_params)
print(send_res.text)

实战效果

我们总共模拟请求了6次,完成了模拟请求验证码,我们来看看效果。

至此,我们总共花了5篇文章来介绍了极验滑块3,现在,还有极验4,大家感兴趣的可以自己去试试,最后,这里再强调一下,本文仅供交流学习,勿用于非法用途。这个自己学习就可以了,请不要滥用这个去轰炸别人,好了,今天,就到这里了。

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

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

相关文章

光伏收益计算工具:助力可再生能源发展的关键

随着全球对可再生能源需求的不断增加,光伏发电作为清洁、可再生的能源形式,越来越受到人们的关注。然而,要评估光伏系统的经济效益和投资回报,需要一个准确的光伏收益计算工具。 光伏收益计算工具是一种专门用于计算光伏系统发电量…

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用

vue el-date-picker中datetime类型对今天之后的日期包含时分禁用 目前对选择秒那一列未禁用 <template><div><el-date-pickerv-model"deactivateTime"type"datetime"format"yyyy-MM-dd HH:mm:ss"value-format"yyyy-MM-dd HH…

MATLAB 点云中心化 (40)

MATLAB 点云中心化 一、算法介绍二、算法实现一、算法介绍 使用点云集合中的坐标计算质心,这里将其作为中心,将每个点坐标减去该中心坐标,即可得到中心化的点云,这在很多处理中是必须进行的一个步骤:相当于点云移动到以质心为原点的坐标系 (主要是计算质心和点云偏移两个…

带你学C语言~指针(2)

目录 &#x1f3c9;前言 &#x1f680; 数组名的理解 &#x1f680;使用指针访问数组 ✈一维数组传参的本质 ✈冒泡排序 &#x1f3c6;二级指针 &#x1f3c6;指针数组 &#x1f3c6;指针数组模拟二维数组 &#x1f389;结束语 &#x1f3c9;前言 上一章&#xff0c;小…

Java基础回顾——异常处理

文章目录 介绍语法抛出异常方法定义使用throws多catchfinally 自定义异常断言logging其他日志库commons loggingLog4j 介绍 一些错误是用户造成的&#xff08;类型输入错误&#xff09;&#xff0c;一些错误的随机出现&#xff08;网络终端、内存耗尽。。。&#xff09;&#…

20倍压缩比!微软提出大模型提示压缩框架LLMLingua

近期&#xff0c;越来越多研究在探索大型语言模型&#xff08;LLM&#xff09;在实际应用中的推理和生成能力。随着 ChatGPT 等模型的广泛研究与应用&#xff0c;如何在保留关键信息的同时&#xff0c;压缩较长的提示成为当前大模型研究的问题之一。 为了加速模型推理并降低成本…

题目讲解(1到5)

1 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 无 输出格式 无 输入输出样例 输入 #1复制 无 输出 #1复制 Hello,World! 这个不会写没啥讲的自裁吧,程序…

C : DS二叉排序树之删除(详细思路解答)

Description 给出一个数据序列&#xff0c;建立二叉排序树&#xff0c;并实现删除功能 对二叉排序树进行中序遍历&#xff0c;可以得到有序的数据序列 Input 第一行输入t&#xff0c;表示有t个数据序列 第二行输入n&#xff0c;表示首个序列包含n个数据 第三行输入n个数据…

JS逆向实战——开发者工具检测

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、背景 在JS逆向领域&#xff0c;Chrome开发者工具是核心&#xff0c;抓包、调试、看调用栈等都离不开它。可以说&#xff0c;逆向人…

Linux基础入门笔记

Linux基础入门笔记&#xff0c;具体可见下载链接 大家阅读时可善用目录功能&#xff0c;可以提高大家的阅读效率 下载地址&#xff1a;Linux笔记 初始linux 操作系统&#xff1a;操作系统是用户和计算机硬件之间的桥梁&#xff0c;调度和管理计算机硬件进行工作常见操作系统 W…

【算法Hot100系列】删除链表的倒数第 N 个结点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

什么牌子猫粮比较好?质量口碑较好的主食冻干猫粮分享

由于猫咪是肉食动物&#xff0c;对蛋白质的需求很高&#xff0c;如果摄入的蛋白质不足&#xff0c;就会影响猫咪的成长。而冻干猫粮本身因为制作工艺的原因&#xff0c;能保留原有的营养成分和营养元素&#xff0c;所以冻干猫粮蛋白含量比较高&#xff0c;营养又高&#xff0c;…