You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python requests登录网站无法获取正确页面代码,请求技术帮助

问题原因及解决方案

原因分析

  • Qrator反机器人拦截:该网站部署了Qrator反爬系统,返回的/__qrator/qauth_utm_v2.js是其验证流程的核心部分,用于检测请求是否来自真实浏览器。requests库仅能发送纯HTTP请求,无法执行JavaScript,因此无法完成Qrator的人机验证,被系统拦截后返回极简验证页面。
  • 请求上下文不完整:直接发送POST登录请求时,缺少了访问登录页时生成的关键Cookie(如Qrator的会话验证Cookie、CSRF令牌等),以及浏览器特有的请求头信息(如完整的User-Agent、Referer、Accept-Language等),导致系统判定请求异常。
  • 缺失前置验证参数:登录页通过JavaScript生成了隐藏的验证参数(如CSRF token、Qrator的验证令牌),直接POST登录账号密码时未携带这些参数,验证失败。

解决方法

  • 使用JS渲染工具模拟浏览器:
    改用Playwright、Selenium这类可以模拟真实浏览器行为的库,它们能自动执行页面JavaScript,完成Qrator的人机验证流程。示例(以Playwright为例):
    from playwright.sync_api import sync_playwright
    
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto("https://vavadaafh.com/ru/login")
        # 等待页面加载完成,填写登录信息
        page.fill('input[name="login"]', "你的账号")
        page.fill('input[name="password"]', "你的密码")
        page.click('button[type="submit"]')
        # 等待登录跳转,获取页面内容
        page.wait_for_load_state("networkidle")
        print(page.content())
        browser.close()
    
  • 手动破解Qrator验证(难度较高):
    1. 先发送GET请求访问登录页,保存响应中的所有Cookie,同时从页面HTML中提取CSRF令牌等参数。
    2. 下载/__qrator/qauth_utm_v2.js脚本,使用PyExecJS或Node.js执行该脚本,生成Qrator要求的验证令牌。
    3. 将生成的令牌、CSRF令牌、登录账号密码一起放入POST请求的表单数据中,带上之前保存的Cookie和完整的浏览器请求头,发送POST请求。
  • 补全请求上下文:
    复制浏览器登录时的所有请求头(可通过F12开发者工具的Network面板查看),确保requests会话的请求头与浏览器完全一致;先发送GET请求获取登录页的Cookie,再使用同一个会话发送POST登录请求,确保Cookie的连贯性。

内容的提问来源于stack exchange,提问作者jjjjjjjjajjajaja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:37:35