proxy.webshare.io注册请求中参数a的含义及代码调试咨询
我使用requests库向proxy.webshare.io/register发送账号注册请求时,抓包得到的请求payload包含如下内容,其中参数a的作用不清楚:
csrfmiddlewaretoken: ph8vDjVsCqtMlZBNaw7w3udZfiFovmhUD6iwoYX4lUvCnaWuyH4371eaP7h2b6rg next: a: a338db2062a111f4279647be78177f5d700bae080c7222dde6f7dc9d88480c25 email: adklasdlklkasdhasdi@gmail.com password1: ádaiysdauisdh g-recaptcha-response: 03ANYolqtAmlYpxhm9kYEJEeTOwNAWeei2G8oa4_W16vPP11n8hyQNCuMYNHVXNj0ppxPSZHLrA26T_7s7BEdWxhS4pLtBse42k5Q5PQoGvQBfM_9SN9Wyrs4CI04lgKjUYTz5wTq_d4tt6vwQK0WkR1K2H34cLaFtxTGv6ugeuzcBmIgOqHLGKUkfOUzgpBpCQ8XFMrV6UeNG1o3jzJa3fnKbCSolvvm7mDh6zE0XZDHVYX2xQPvJNCcyeUGUKnQ1AM1zEW7Lk7PzMFBZT8w0p57LKGVw-50ZXH2Y4nF1Vjnu4-PWVC30l61BbP_PxAVw15df499g6ABLy9LFhpKJdX6o8aKr5XmhkF5_xDm5rLDEnMMhBnsfWzit6ZSBinKC4UyaLlOE2Y32cuLuIGRM9PIy1jKz6D2pnhwGE2243Q0VmC4Gyl9S9UPlUp6wD-uWq_mXlgGxQYUXTvhYE8f-TtJLiLkCXNYrsf2EzQMaB0BwpbsO1EgBM3X1Vl2ImP_e4ckpHN-YANwfPF9INp_dMZCW6Le8LIc0_M7FjYw6oMhvkTuxSndHDU8
以下是我当前编写的代码:
captcha = RecaptchaV2Task("f45d75eba65f912dcdd84c6fb982db83") em_f_n = "".join(random.choices(string.ascii_letters, k=15)) pw_f_n = "".join(random.choices(string.ascii_letters + string.digits, k=15)) def _solve_recaptcha(): task_id = captcha.create_task(website_url="https://proxy.webshare.io/register/", website_key="6LeHZ6UUAAAAAKat_YS--O2tj_by3gv3r_l03j9d") print("Wait for respone") print(task_id) respone = captcha.join_task_result(task_id).get("gRecaptchaResponse") print("Recieved key: " + respone) return respone key = _solve_recaptcha() if 'csrftoken' in client.cookies: csrftoken = client.cookies['csrftoken'] else: csrftoken = client.cookies['csrf'] data = { "email": f"{em_f_n}@gmail.com", "password1": pw_f_n, "g-recaptcha-response": key, "next": "/", "csrfmiddlewaretoken":csrftoken } r = client.post("https://proxy.webshare.io/register", json=data) print(r.status_code) print(em_f_n+ "@gmail.com") print(pw_f_n) time.sleep(2)
参数a的含义
这个参数是WebShare生成的会话绑定验证令牌,通常是基于当前页面会话、加载时的随机值生成的哈希字符串,用于:
- 验证请求是否来自合法的页面会话,拦截自动化爬虫或伪造请求
- 作为额外的CSRF防护补充,确保请求和当前页面会话匹配
代码修正建议
要完成注册请求,你需要:
- 先获取参数
a:访问注册页面时,后端会将该参数渲染到页面HTML中,需从页面源码提取 - 修正请求格式:网站注册接口接收的是表单格式(
application/x-www-form-urlencoded),而非JSON格式 - 修正
next参数值:原抓包中next为空值,需保持一致
调整后的代码示例:
import requests import random import string from bs4 import BeautifulSoup captcha = RecaptchaV2Task("f45d75eba65f912dcdd84c6fb982db83") em_f_n = "".join(random.choices(string.ascii_letters, k=15)) pw_f_n = "".join(random.choices(string.ascii_letters + string.digits, k=15)) client = requests.Session() # 确保会话统一 def _solve_recaptcha(): task_id = captcha.create_task(website_url="https://proxy.webshare.io/register/", website_key="6LeHZ6UUAAAAAKat_YS--O2tj_by3gv3r_l03j9d") print("Wait for response") print(task_id) response = captcha.join_task_result(task_id).get("gRecaptchaResponse") print("Received key: " + response) return response # 第一步:访问注册页面,获取csrftoken和参数a register_page = client.get("https://proxy.webshare.io/register/") soup = BeautifulSoup(register_page.text, "html.parser") a_param = soup.find("input", {"name": "a"})["value"] csrftoken = client.cookies.get('csrftoken') or client.cookies.get('csrf') key = _solve_recaptcha() # 构造正确的请求数据 data = { "email": f"{em_f_n}@gmail.com", "password1": pw_f_n, "g-recaptcha-response": key, "next": "", "csrfmiddlewaretoken": csrftoken, "a": a_param } # 发送表单格式的POST请求 r = client.post("https://proxy.webshare.io/register", data=data) print(r.status_code) print(f"{em_f_n}@gmail.com") print(pw_f_n)
内容的提问来源于stack exchange,提问作者user19419589
相关产品推荐
相关产品推荐

