记一次滑块验证码协议通过的经历

网址:

https://my.ztgame.com/plugin/pwd

然后来看一下这个滑块验证码是如何通过的。

打开F12:

当我把滑块拉到这个位置的时候,产生了一次请求:

记一次滑块验证码协议通过的经历_第1张图片

请求返回的内容如下:

jQuery112309196920250839282_1574913077019({"code":0,"token":"1npfs7s1a68cf2bf3g06vzmp7gjfz06j89ofpx7lg7ksl9qpv9p7aoupa1o1m8i7kbc93xaebmx35ba4zq38yxtggv473ancdj3yoj3g13guf6gbbg5kneg88i0kqhkawcv1a96nmakejooy6tu735h6s0dcvxjqceji4fwct5ipafbllui356p"})

可以大致估计出来,这个请求是验证码校验成功的请求返回了token值。

那么,来看看这个请求的参数有哪些:

记一次滑块验证码协议通过的经历_第2张图片

参数值之中,有三个参数暂时不知道:

但是一般的滑块验证码,轨迹参数是必不可少的。

input参数:

通过尝试,发现这个验证码没有轨迹参数,上面的input仅仅是将滑动的距离进行了base64的加密。

代码如下:

import base64
distance = 70
a = base64.b64encode(str(distance).encode()).decode()
print(a)

写个test试一下看看:

巧合的是,

以拖动70的距离来进行测试的话,返回的结果为:

这样input参数就有了。

nonce参数:

记一次滑块验证码协议通过的经历_第3张图片

一番查找之后发现nonce这个参数在这里。

然后回到上面的问题,只剩下距离的计算了,那在计算距离的时候,肯定第一个想到的就是先拿回来验证码图片:

查找之后,验证码图片的链接被找到:

记一次滑块验证码协议通过的经历_第4张图片

然后在拿回来验证码图片之后,经过计算距离,然后用base64对距离进行加密,之后传入参数,即可通过。

写完代码之后,检测一下,输出结果为:

token值拿到了。

你可能感兴趣的:(爬虫)