我正在尝试自动登录名为stake.us的网站。他们已经实现了一个hcaptcha来阻止机器人登录网站。我正在使用2captcha服务获取captcha的解决方案。现在,2captcha提供的验证码需要输入到两个隐藏字段中,然后我们要么需要单击提交按钮,要么应该有回调。提交按钮不在那里,所以他们在这里使用回调。我研究了网络选项卡,但无法确定回调函数。
我尝试过的事情直到现在。
- 彻底检查网络选项卡以识别回调请求
- 试图找到类似的问题,并在堆栈溢出或任何其他网站上检查任何可能的解决方案
- 查阅了hcaptcha文档。然而,我无法理解任何重要的东西
重要链接:
- hcaptcha文档
- 堆栈溢出类似问题1
- 堆栈溢出类似问题2
- 关于如何识别回调的视频
- Gist重写render方法以进行自己的回调
如果有人能帮我找到回调函数。请告诉我。我将非常感谢你的帮助。
我试图查找您的网站,但在网站上没有看到Hcaptcha。因此,它可能隐藏或存在于后续页面中。Hcaptcha的实现因站点而异,因此如果没有页面源和Iframes,就很难找到正确的回调。。如果有的话。
您在网络选项卡上处于正确的轨道上,尽管先清除所有当前交易,然后手动解决captcha。然后检查"网络"选项卡中是否有类似404的内容,它应该有一个PAYLOAD。然后,您可以编写函数来封装该负载并将其发送出去。我为类似的Hcaptcha问题提供了3个解决方案Selenium(Python(Webdriver可以';t访问网站。希望其中一个解决方案能奏效。好运
他们使用GraphQL传递已解决的captcha令牌。寻找一个POST请求,该请求包含";RequestLogiUser";活动
以下是Python解决方案的一个工作示例(抱歉不是JS(:
import httpx
from unicaps import CaptchaSolvingService, CaptchaSolver
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0'
}
# GraphQL data for the RequestLoginUser operation
data = {
"query": "mutation RequestLoginUser($name: String, $email: String, $password: String!, "
"$captcha: String!) {n requestLoginUser(n name: $namen email: $emailn "
"password: $passwordn captcha: $captchan ) {n loginTokenn "
"hasTfaEnabledn requiresLoginCoden user {n idn namen "
"__typenamen }n __typenamen }n}n",
"operationName": "RequestLoginUser",
"variables": {
"email":"<<YOUR_EMAIL_HERE>>",
"password":"<<YOUR_PASSWORD>>",
"captcha":"<<WE WILL SOLVE HCAPTCHA AND PLACE TOKEN HERE>>"
}
}
# init solver and solve hCaptcha
solver = CaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, '<<YOUR_API_KEY_HERE>>')
solved = solver.solve_hcaptcha(
site_key='08a8899d-4c15-47cc-b7a6-d287258d8e1c',
page_url='https://stake.us/?tab=login'
)
# put the solved CAPTCHA token into the payload data
data["variables"]["captcha"] = solved.solution.token
# log in
response = httpx.post(
'https://api.stake.us/graphql',
headers=HEADERS,
json=data
)
# the response JSON would contain loginToken that we must use in further requests
print(response.json())