diff --git a/onoe.py b/onoe.py index 76565ab..884db9e 100644 --- a/onoe.py +++ b/onoe.py @@ -221,6 +221,7 @@ def gettoken(proxy, r=2): } try: proxy_str = db.get_proxy(proxy) + logger.info(f"[代理] => {proxy_str}") url = 'https://graphql.api.dailymotion.com/oauth/token' response = requests.post(url, headers=headers, data=data, proxies={"http": proxy_str, "https": proxy_str}) token = response.json()['access_token'] @@ -262,43 +263,43 @@ def solve_recaptcha_v3_with_proxy( last_error = None for attempt in range(1, max_task_retries + 1): - # try: - encoded_query = quote(keyword, safe="") - payload = { - "clientKey": "CAP-A76C932D4C6CCB3CA748F77FDC07D996", - "task": { - "type": "ReCaptchaV3TaskProxyLess", - "websiteURL": f"https://www.dailymotion.com/search/{encoded_query}/top-results", - "websiteKey": "6LeOJBIrAAAAAPMIjyYvo-eN_9W1HDOkrEqHR8tM", - "pageAction": "search", - "minScore": 0.5 + try: + encoded_query = quote(keyword, safe="") + payload = { + "clientKey": "CAP-A76C932D4C6CCB3CA748F77FDC07D996", + "task": { + "type": "ReCaptchaV3TaskProxyLess", + "websiteURL": f"https://www.dailymotion.com/search/{encoded_query}/top-results", + "websiteKey": "6LeOJBIrAAAAAPMIjyYvo-eN_9W1HDOkrEqHR8tM", + "pageAction": "search", + "minScore": 0.5 + } } - } - resp = requests.post(create_url, data=json.dumps(payload), headers=headers, timeout=30) - logger.info(f"[token] 发送 payload:{payload}") - resp.raise_for_status() - task_id = resp.json()["taskId"] - logger.info(f"task_id: {resp.text}") - # 轮询获取结果 - check_payload = {"clientKey": "CAP-A76C932D4C6CCB3CA748F77FDC07D996", "taskId": task_id} - for i in range(max_poll_attempts): - r = requests.post(result_url, json=check_payload, headers=headers, timeout=10) - r.raise_for_status() - result = r.json() - logger.info(f"第{i}次,task_id:{task_id},结果:{result}") - if result.get("status") == "ready": - return result["solution"]["gRecaptchaResponse"] - time.sleep(polling_interval) + resp = requests.post(create_url, data=json.dumps(payload), headers=headers, timeout=30) + logger.info(f"[token] 发送 payload:{payload}") + resp.raise_for_status() + task_id = resp.json()["taskId"] + logger.info(f"task_id: {resp.text}") + # 轮询获取结果 + check_payload = {"clientKey": "CAP-A76C932D4C6CCB3CA748F77FDC07D996", "taskId": task_id} + for i in range(max_poll_attempts): + r = requests.post(result_url, json=check_payload, headers=headers, timeout=10) + r.raise_for_status() + result = r.json() + logger.info(f"第{i}次,task_id:{task_id},结果:{result}") + if result.get("status") == "ready": + return result["solution"]["gRecaptchaResponse"] + time.sleep(polling_interval) - # raise TimeoutError(f"任务 {task_id} 在轮询 {max_poll_attempts} 次后未完成") - # - # except Exception as e: - # last_error = e - # if attempt < max_task_retries: - # time.sleep(2) - # continue - # else: - # break + raise TimeoutError(f"任务 {task_id} 在轮询 {max_poll_attempts} 次后未完成") + + except Exception as e: + last_error = e + if attempt < max_task_retries: + time.sleep(2) + continue + else: + break raise Exception(f"创建或获取 reCAPTCHA v3 token 失败: {last_error}")