关于 w 值
文章提到,在三代中,有几个接口请求都会涉及到 w 值的校验。除了最后一个校验接口 ajax.php 外,其他接口的 w 值可以置空。但是在一键通过模式中,请求 get.php 接口获取 c 和 s 值时也需要校验 w 值。因此需要获取两次 w 值,而这两次 w 值的生成方式可能不完全相同。
首先,我们需要获取 w 值。在请求 get.php 接口时,我们可以尝试不传递 w 值,如果出现错误提示,就需要获取正确的 w 值并传递。
python
import requests
def get_w():
url = 'https://example.com/get.php'
params = {
'other_params': 'value',
# 这里不传递 w 值,尝试获取 w 值
}
response = requests.get(url, params=params)
data = response.json()
if 'error' in data:
error_message = data['user_error']
print(f"Error occurred: {error_message}")
# 获取正确的 w 值并传递
w = generate_w()
params['w'] = w
response = requests.get(url, params=params)
data = response.json()
return data['w']
def generate_w():
# 根据具体算法生成 w 值
# 这里需要根据实际情况编写生成 w 值的算法
w = 'generated_w_value'
return w
# 获取 w 值
w_value = get_w()
print(f"Obtained w value: {w_value}")
关于时间间隔
在三代中,整个流程走得太快也会导致验证失败。所以在生成 w 值之后,需要随机停留一段时间,一般约 2 秒左右。
python
import time
import random
def delay():
# 随机停留 2 秒左右
delay_time = random.uniform(1.5, 2.5)
print(f"Delaying for {delay_time} seconds...")
time.sleep(delay_time)
# 调用延迟函数
delay()
关于 challenge
在三代中,challenge 参数参与了很多接口的请求。对于滑块,第一次获取到的 challenge 后续会有变化,后续的请求需要使用新的 challenge。因此,在获取到 challenge 后,需要保存并在后续的请求中使用新的 challenge。
python
def get_challenge():
url = 'https://example.com/get_challenge.php'
response = requests.get(url)
data = response.json()
return data['challenge']
# 获取 challenge
challenge = get_challenge()
print(f"Obtained challenge: {challenge}")
关于 c 和 s
在三代中,c 和 s 值也参与了 w 值的计算。在点选和滑块验证中,第一次请求 get.php 会返回 c 和 s 值,第二次请求也会返回 c 和 s 值。需要使用第二次返回的 s 值来生成 w 值。
python
def get_c_and_s():
url = 'https://example.com/get.php'
response = requests.get(url)
data = response.json()
c = data['c']
s = data['s']
return c, s
# 获取 c 和 s 值
c_value, s_value = get_c_and_s()
print(f"Obtained c value: {c_value}")
print(f"Obtained s value: {s_value}")
更多内容联系q1436423940