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

为何使用TwoCaptcha的代码无法绕过Funpay的reCAPTCHA完成登录?

Funpay登录代码无法成功登录的问题排查与修复

核心问题分析

  • 登录请求URL错误:你把POST请求发到了https://funpay.com/chat/,但正确的登录处理接口是https://funpay.com/account/login,chat页面不负责登录校验。
  • 会话一致性缺失:获取csrf-token时用了独立的requests.get(),而非Session对象的请求,导致csrf-token和后续Session的Cookie不匹配,网站会直接拒绝验证。
  • User-Agent不统一:获取csrf-token的请求用了默认UA,后续Session用了自定义UA,这种不一致可能触发网站的反爬校验。
  • 变量未定义:代码里login和pasword(拼写应该是password)变量没声明,实际运行时会报错,你得确保这两个变量有正确的账号密码值。

修复后的代码示例

import time
from twocaptcha import TwoCaptcha
import requests
from bs4 import BeautifulSoup
from fake_user_agent.main import user_agent

# 验证码平台配置
config = {
    'server': 'rucaptcha.com',
    'apiKey': '你的API_KEY',
    'defaultTimeout': 120,
    'recaptchaTimeout': 600,
    'pollingInterval': 10,
}
solver = TwoCaptcha(**config)
print(f"验证码平台余额: {solver.balance()}")

# 获取reCAPTCHA验证码响应
try:
    result = solver.recaptcha(
        sitekey='6LdTYk0UAAAAAGgiIwCu8pB3LveQ1TcLUPXBpjDh',
        url='https://funpay.com/account/login'
        # 如果是v3验证码,需补充version='v3'和action参数
    )
    captcha_response = result["code"]
    print(f"验证码响应: {captcha_response}")
except Exception as e:
    print(f"验证码获取失败: {e}")
    exit()

# 初始化Session,全程用同一个会话保持Cookie一致
session = requests.Session()
custom_ua = user_agent()
session.headers.update({
    "user-agent": custom_ua,
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "accept-language": "en-US,en;q=0.5"
})

# 获取登录页面并解析csrf-token(用Session发起请求)
login_url = "https://funpay.com/account/login"
response = session.get(login_url)
soup = BeautifulSoup(response.text, "lxml")
app_data = soup.find("body").get("data-app-data")
csrf_token = app_data.split('"')[3] if app_data else None
if not csrf_token:
    print("无法获取csrf-token")
    exit()
print(f"csrf-token: {csrf_token}")

# 登录参数(替换成你的真实账号密码)
login = "你的账号"
password = "你的密码"
login_data = {
    "login": login,
    "password": password,
    "csrf_token": csrf_token,
    "g-recaptcha-response": captcha_response
}

# 发送登录请求到正确接口
try:
    login_response = session.post(login_url, data=login_data)
    print(f"登录请求状态码: {login_response.status_code}")
    
    # 验证登录结果:访问需要登录的页面(比如chat)
    chat_response = session.get("https://funpay.com/chat/")
    # 检查页面是否包含登录后的标识(比如用户名、退出按钮)
    if "退出" in chat_response.text or "你的用户名" in chat_response.text:
        print("登录成功")
    else:
        print("登录失败,页面未显示登录状态")
        # 可以打印页面内容排查问题
        # print(chat_response.text)
except Exception as e:
    print(f"登录请求出错: {e}")

额外注意事项

  • 验证码参数校验:确认reCAPTCHA的sitekey是否正确,若为v3版本,需补充version='v3'和对应action参数。
  • 反爬细节:必要时在headers中添加Referer: https://funpay.com/account/login,模拟真实浏览器的请求逻辑。
  • 错误捕获:保留异常捕获逻辑,能更快定位验证码获取、csrf解析等环节的问题。

内容的提问来源于stack exchange,提问作者Влад Даниленко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:28