Files
steamreg/PynoCaptchaSolver.py

83 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from dataclasses import dataclass
from typing import Dict, Optional
from pynocaptcha import HcaptchaCracker
from loguru import logger
@dataclass
class PynoCaptchaConfig:
user_token: str
sitekey: str = "8cf23430-f9c8-4aaa-9ba2-da32f65adf2e" # 默认值
referer: str = "https://store.steampowered.com/join/"
timeout: int = 60
debug: bool = True
user_agent: str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Valve Steam Client/default/1741737356) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36"
class PynoCaptchaSolver:
def __init__(self, config: PynoCaptchaConfig):
self.config = config
logger.debug(f"PynoCaptchaSolver 初始化 - 使用 PyNoCaptcha 库")
def solve_hcaptcha(self) -> Optional[Dict]:
"""
使用 PyNoCaptcha 库解决 HCaptcha 验证码
返回:
成功时返回包含验证结果的字典失败时返回None
"""
try:
logger.debug(f"开始解决验证码 - sitekey: {self.config.sitekey}")
logger.debug(f"使用User-Agent: {self.config.user_agent}")
# 创建验证码破解器
cracker = HcaptchaCracker(
user_token=self.config.user_token,
sitekey=self.config.sitekey,
referer=self.config.referer,
user_agent=self.config.user_agent,
debug=self.config.debug,
timeout=self.config.timeout,
)
# 破解验证码
logger.debug("调用 PyNoCaptcha 进行破解")
result = cracker.crack()
if result:
logger.debug("验证码破解成功")
return {
"captcha_text": result.get("generated_pass_UUID"),
"token": result.get("generated_pass_UUID"),
"solution": result
}
else:
logger.error("验证码破解失败")
return None
except Exception as e:
logger.error(f"验证码破解过程中出错: {str(e)}")
return None
# 使用示例
if __name__ == "__main__":
# 配置
config = PynoCaptchaConfig(
user_token="cf169d36-0d62-45da-bff7-1eff42bbc4f3",
sitekey="8cf23430-f9c8-4aaa-9ba2-da32f65adf2e",
referer="https://store.steampowered.com/join/",
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; Valve Steam Client/default/1741737356) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36"
)
# 初始化求解器
solver = PynoCaptchaSolver(config)
# 解决验证码
result = solver.solve_hcaptcha()
if result:
print(f"验证成功: {result['captcha_text'][:30]}...")
else:
print("验证失败")