Skip to content

Commit

Permalink
feat: AmorterValidator 接入
Browse files Browse the repository at this point in the history
  • Loading branch information
mikumifa committed Jun 15, 2024
1 parent 3db492b commit 98e1c2e
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 31 deletions.
Binary file removed click.exe
Binary file not shown.
44 changes: 15 additions & 29 deletions geetest/AmorterValidator.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import time

import bili_ticket_gt_python
import loguru
from retry import retry
import threading

from config import cookies_config_path
from geetest.Validator import Validator
Expand All @@ -22,30 +20,11 @@ def __init__(self):

def validate(self, appkey, gt, challenge, referer="http://127.0.0.1:7860/") -> str:
try:
loguru.logger.info(f"gt: {gt} ; challenge: {challenge}")
(_, _) = self.click.get_c_s(gt, challenge)
_type = self.click.get_type(gt, challenge)
if _type != "click":
raise Exception("验证码类型错误")
(c, s, args) = self.click.get_new_c_s_args(gt, challenge)

@retry()
def inner_try():
before_calculate_key = time.time()
key = self.click.calculate_key(args)
# rt固定即可
# 此函数是使用项目目录下的click.exe生成w参数,如果文件不存在会报错,你也可以自己接入生成w的逻辑函数
w = self.click.generate_w(key, gt, challenge, str(c), s, "abcdefghijklmnop")
# 点选验证码生成w后需要等待2秒提交
w_use_time = time.time() - before_calculate_key
loguru.logger.info(f"w生成时间:{w_use_time}")
if w_use_time < 2:
time.sleep(2 - w_use_time)
(msg, validate) = self.click.verify(gt, challenge, w)
loguru.logger.info(f"msg: {msg} ; validate: {validate}")
return validate
loguru.logger.info(f"AmorterValidator gt: {gt} ; challenge: {challenge}")
validate = self.click.simple_match_retry(gt, challenge)
loguru.logger.info(f"AmorterValidator: {validate}")
return validate

return inner_try()
except Exception as e:
loguru.logger.warning(e)
raise e
Expand All @@ -61,9 +40,16 @@ def inner_try():
challenge = test_res["data"]["geetest"]["challenge"]
gt = test_res["data"]["geetest"]["gt"]

validator = AmorterValidator()
try:
validate_string = validator.validate(appkey, gt, challenge)
print(f"Validation String: {validate_string}")
def validate_task():
validator = AmorterValidator()
validate_string = validator.validate(appkey, gt, challenge)
print(f"Validation result: {validate_string}")

# 创建一个线程来运行验证函数
validation_thread = threading.Thread(target=validate_task)
# 启动线程
validation_thread.start()
validation_thread.join()
except Exception as e:
print(f"Error: {e}")
2 changes: 1 addition & 1 deletion geetest/RROCRValidator.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def __init__(self):

@retry(tries=10)
def validate(self, appkey, gt, challenge, referer="http://www.baidu.com", ip='', host='') -> str:
loguru.logger.info("start rrocr validate")
if appkey is None or appkey == "":
appkey = self.cookieManager.get_config_value("appkey", "")
else:
Expand All @@ -40,7 +41,6 @@ def validate(self, appkey, gt, challenge, referer="http://www.baidu.com", ip='',
"host": host
}
data = parse.urlencode(data)
loguru.logger.info("start rrocr validate")
response = requests.post(self.url, headers=self.headers, data=data)

if response.status_code == 200:
Expand Down
Binary file removed geetest/click.exe
Binary file not shown.
Binary file removed geetest/slide.exe
Binary file not shown.
Binary file removed slide.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion tab/go.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from util.error import ERRNO_DICT, withTimeString
from util.order_qrcode import get_qrcode_url

ways = ["手动", "使用 rrocr", "使用 CapSolver", "本地验证码(Amorter提供)"]
ways = ["手动", "使用 rrocr", "使用 CapSolver", "本地过验证码(Amorter提供)"]
ways_detail = [NormalValidator(), RROCRValidator(), CapSolverValidator(), AmorterValidator()]


Expand Down
1 change: 1 addition & 0 deletions tab/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ def train_tab():
| 手动 | 自己过,速度取决于自己,过程看项目的readme.md的GIF |
| 使用打码平台 rrocr | **支持**手动和人工同时使用 <br /> rrocr 提供的 http://www.rrocr.com<br /> 能过验证码,但是抢票没有测试,慎用 <br /> 需要购买对应的key,速度比手动快,价格 一次大概一分钱<br /> |
| 使用过码服务 CapSolver | **不支持**手动和人工同时使用<br />自动过码大约**需12秒起** <br /> CapSolver的过码方式<br />https://www.capsolver.com/zh <br />https://docs.capsolver.com/guide/captcha/Geetest.html|
| 本地过验证码 | **推荐**<br />**不支持**手动和人工同时使用<br />本地过码,免费,不会收网速影响<br />成功率99%<br />速度快,正常**需3秒左右** <br /> https://github.com/Amorter/biliTicker_gt/releases|
| ..... | 欢迎Discussion补充 |
""")
Expand Down

0 comments on commit 98e1c2e

Please sign in to comment.