From 28140e98d3b6dd1a1c834b2d6b3f2349c51e6b1e Mon Sep 17 00:00:00 2001 From: roiding Date: Thu, 15 May 2025 21:22:41 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=B1=A0=E4=B8=8D?= =?UTF-8?q?=E9=85=8D=E7=BD=AEpermit=E4=B9=9F=E5=8F=AF=E4=BB=A5=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E8=B5=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 代理池不配置permit也可以全部走 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6018b21..6931886 100644 --- a/README.md +++ b/README.md @@ -104,11 +104,11 @@ DY_PROXY_RENUM='5' 获取IP失败重试次数 DY_PROXY_REDELAY='3' 获取失败重试间隔 单位秒 -代理池模式支持全部js脚 +代理池模式支持全部js DP_POOL='http://xxx' 代理池url -PERMIT_JS='farm&plant&opencard' 需要走代理池的js关键词,多个&分割,必须设置 +PERMIT_JS='farm&plant&opencard' 需要走代理池的js关键词,多个&分割(可不设置,如果不设置就是所有的js都会走) 禁止指定的pin执行任务: From ededfc983e3bfb5b2b08779de0efe4ad6e4078ad Mon Sep 17 00:00:00 2001 From: roiding Date: Thu, 15 May 2025 21:32:51 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=B6=88=E9=99=A4=E6=AD=A7=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6931886..f3a26be 100644 --- a/README.md +++ b/README.md @@ -104,12 +104,16 @@ DY_PROXY_RENUM='5' 获取IP失败重试次数 DY_PROXY_REDELAY='3' 获取失败重试间隔 单位秒 +****API代理的意思就是通过url得到随机可用代理,response的格式就是:xxx.xxx.xxx.xxx:xxxx** + 代理池模式支持全部js DP_POOL='http://xxx' 代理池url PERMIT_JS='farm&plant&opencard' 需要走代理池的js关键词,多个&分割(可不设置,如果不设置就是所有的js都会走) +**代理池是一个固定不变的地址,通过这个地址服务,服务会自动转发请求到可用代理,本质上代理池就是一个代理服务器** + 禁止指定的pin执行任务: 多个任务同pin:BANPIN='任务1|任务2@pin1,pin2' From 90c868c5f8ccf8f5f1ad9997d15243be80704c23 Mon Sep 17 00:00:00 2001 From: roiding Date: Fri, 16 May 2025 16:29:58 +0800 Subject: [PATCH 3/7] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8C=B9=E9=85=8Dreadme.md=202.=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=96=B0=E9=95=9C=E5=83=8F=E5=8C=B9=E9=85=8D=E4=BA=86?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E7=9B=AE=E5=BD=95=E5=8C=B9=E9=85=8D=203.=20?= =?UTF-8?q?=E5=B0=86pip3=E5=92=8Cpnpm=E7=9A=84=E8=B5=84=E6=BA=90=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=98=A0=E5=B0=84=EF=BC=8C=E9=81=BF=E5=85=8D=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E9=87=8D=E6=96=B0=E5=90=AF=E5=8A=A8=E7=9A=84dep?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose.yml | 17 ++++++----------- docker/ql1key.sh | 25 ++++++++----------------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index cd3f01b..d1cfbd7 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,17 +1,12 @@ version: '2' services: ql_web: - image: whyour/qinglong:2.11.3 + image: whyour/qinglong:2.17.9 container_name: ql volumes: - - ./data/config:/ql/config - - ./data/log:/ql/log - - ./data/db:/ql/db - - ./data/scripts:/ql/scripts - - ./data/repo:/ql/repo + - ./qinglong/data:/ql/data + - ./qinglong/deps/pnpm:/root/.local/share/pnpm + - ./qinglong/deps/pip3:/usr/local/lib/python3.11/site-packages ports: - - "0.0.0.0:5700:5700" - environment: - - ENABLE_HANGUP=true - - ENABLE_WEB_PANEL=true - restart: always + - "5700:5700" + restart: unless-stopped diff --git a/docker/ql1key.sh b/docker/ql1key.sh index 368951f..f392bbd 100644 --- a/docker/ql1key.sh +++ b/docker/ql1key.sh @@ -46,25 +46,16 @@ cd $ql_path cat > docker-compose.yml < Date: Sat, 17 May 2025 14:56:46 +0800 Subject: [PATCH 4/7] =?UTF-8?q?python=E5=A4=A9=E7=84=B6=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B8=A6=E8=AE=A4=E8=AF=81=E7=9A=84URL=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=81=9A=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_wsck.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/jd_wsck.py b/jd_wsck.py index 741f7e5..82d24f1 100644 --- a/jd_wsck.py +++ b/jd_wsck.py @@ -42,8 +42,27 @@ def randomuserAgent(): def get_proxy_api(proxy_url, max_retries=5, timeout=60, retry_delay=1): + session = requests.Session() for retry in range(max_retries): - res = get(url=proxy_url) + if '@' in proxy_url: + # 解析认证信息 + auth_part, url_part = proxy_url.split('@') + protocol = url_part.split('://')[0] + host = url_part.split('://')[1] + + # 处理只有 token 的情况 + if ':' in auth_part: + username, password = auth_part.split(':') + session.auth = (username, password) + else: + # 只有 token 的情况 + token = auth_part + session.headers.update({'Authorization': f'Bearer {token}'}) + + res = session.get(f"{protocol}://{host}", verify=False, timeout=timeout) + else: + res = session.get(proxy_url, verify=False, timeout=timeout) + printf(f"本次获取到的代理:{res.text}") proxy_ip_port = res.text.strip() proxy_address = f"http://{proxy_ip_port}" From 2897769d6a0b9f21c4c51154ff1ee16bc26fb5ef Mon Sep 17 00:00:00 2001 From: roiding Date: Sat, 17 May 2025 14:57:38 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=9D=E6=8C=81=E4=B8=8Ejs=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E4=BB=A3=E7=90=86=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E4=B8=80=E8=87=B4?= =?UTF-8?q?=EF=BC=8C=E5=87=8F=E5=B0=91=E4=BA=BA=E4=B8=BA=E9=9A=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_wsck.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jd_wsck.py b/jd_wsck.py index 82d24f1..ba04ef1 100644 --- a/jd_wsck.py +++ b/jd_wsck.py @@ -261,7 +261,7 @@ def get_sign_diy(pin): def getcookie_wskey(key): proxys = proxy_url - if os.environ.get("WSKEY_PROXY_URL") is not None: + if os.environ.get("DY_PROXY") is not None: proxys = get_proxy_api(proxy_url) body = "body=%7B%22to%22%3A%22https%3A//plogin.m.jd.com/jd-mlogin/static/html/appjmp_blank.html%22%7D" @@ -289,7 +289,7 @@ def getcookie_wskey(key): printf(f"【错误】{unquote(pin)}在获取token时:\n{error}") return pin, "False" randomuserAgent() - if os.environ.get("WSKEY_PROXY_URL") is not None: + if os.environ.get("DY_PROXY") is not None: proxys = get_proxy_api(proxy_url) continue @@ -299,7 +299,7 @@ def getcookie_wskey(key): printf(f"【警告】{unquote(pin)}在获取token时失败,等待5秒后重试") time.sleep(5) randomuserAgent() - if os.environ.get("WSKEY_PROXY_URL") is not None: + if os.environ.get("DY_PROXY") is not None: proxys = get_proxy_api(proxy_url) if token=="xxx": @@ -326,7 +326,7 @@ def getcookie_wskey(key): printf(f"【错误】{unquote(pin)}在获取cookie时:\n{error}") return "Error" randomuserAgent() - if os.environ.get("WSKEY_PROXY_URL") is not None: + if os.environ.get("DY_PROXY") is not None: proxys = get_proxy_api(proxy_url) continue @@ -461,13 +461,13 @@ def main(): printf("版本: 20230602") printf("说明: 如果用Wxpusher通知需配置WP_APP_TOKEN_ONE和WP_APP_MAIN_UID,其中WP_APP_MAIN_UID是你的Wxpusher UID") printf("隧道型代理池接口:export WSKEY_PROXY_TUNNRL='http://127.0.0.1:123456'") - printf("拉取型代理API接口(数据格式:txt;提取数量:每次一个):export WSKEY_PROXY_URL='http://xxx.com/apiUrl'") + printf("拉取型代理API接口(数据格式:txt;提取数量:每次一个):export DY_PROXY='http://xxx.com/apiUrl'") printf("没有代理可以自行注册,比如携趣,巨量,每日免费1000IP,完全够用") printf("====================================") config="" envtype="" global proxy_url - proxy_url=os.environ.get("WSKEY_PROXY_URL") or os.environ.get("WSKEY_PROXY_TUNNRL") or None + proxy_url=os.environ.get("DY_PROXY") or os.environ.get("WSKEY_PROXY_TUNNRL") or None iswxpusher=False counttime=0 @@ -498,7 +498,7 @@ def main(): iswxpusher=False if proxy_url is None: - printf("没有配置代理,无法使用代理!\n请配置环境变量WSKEY_PROXY_TUNNRL或WSKEY_PROXY_URL\n") + printf("没有配置代理,无法使用代理!\n请配置环境变量WSKEY_PROXY_TUNNRL或DY_PROXY\n") printf("====================================") else: printf(f"已配置代理: {proxy_url}\n") From 0791380bf5285d56c824745795f512243aecfd13 Mon Sep 17 00:00:00 2001 From: roiding Date: Sat, 17 May 2025 15:02:28 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=8D=95token=E6=83=85=E5=86=B5=E4=B8=8B?= =?UTF-8?q?=E8=BD=ACbase64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_wsck.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jd_wsck.py b/jd_wsck.py index ba04ef1..79e09dd 100644 --- a/jd_wsck.py +++ b/jd_wsck.py @@ -55,9 +55,10 @@ def get_proxy_api(proxy_url, max_retries=5, timeout=60, retry_delay=1): username, password = auth_part.split(':') session.auth = (username, password) else: - # 只有 token 的情况 + # 只有 token 的情况,需要 base64 编码 token = auth_part - session.headers.update({'Authorization': f'Bearer {token}'}) + token_b64 = base64.b64encode(token.encode()).decode() + session.headers.update({'Authorization': f'Basic {token_b64}'}) res = session.get(f"{protocol}://{host}", verify=False, timeout=timeout) else: From 61cc62d89acd2c4f4a8f6f79f4d71724a7c10269 Mon Sep 17 00:00:00 2001 From: roiding Date: Sat, 17 May 2025 15:06:52 +0800 Subject: [PATCH 7/7] =?UTF-8?q?claude=E6=98=AFsb=EF=BC=8C=E8=BF=98?= =?UTF-8?q?=E5=BE=97=E8=87=AA=E5=B7=B1=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_wsck.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jd_wsck.py b/jd_wsck.py index 79e09dd..a953cf8 100644 --- a/jd_wsck.py +++ b/jd_wsck.py @@ -47,8 +47,9 @@ def get_proxy_api(proxy_url, max_retries=5, timeout=60, retry_delay=1): if '@' in proxy_url: # 解析认证信息 auth_part, url_part = proxy_url.split('@') - protocol = url_part.split('://')[0] - host = url_part.split('://')[1] + protocol = auth_part.split('://')[0] + auth_part = auth_part.split('://')[1] + host = url_part # 处理只有 token 的情况 if ':' in auth_part: