feat: 添加 fetch_proxies1 方法以从新 API 获取代理 IP

This commit is contained in:
晓丰 2025-05-28 14:30:06 +08:00
parent d26828449b
commit cdc1bede9e

View File

@ -4,9 +4,11 @@
import time
import sys
import argparse
from json.decoder import JSONObject
from urllib.parse import quote
import redis
import requests
from pydantic.v1 import JsonError
from requests import RequestException
import DB
@ -46,6 +48,24 @@ def fetch_proxies2(region_code, n):
url = "http://" + region_code.lower() + "-pr.thordata.net:25000"
return [url for _ in range(n)]
def fetch_proxies1(region_code, n):
url = f"http://api.proxy.ipidea.io/getProxyIp?num={n}&return_type=json&lb=1&sb=0&flow=1&regions={region_code}&protocol=http"
try:
res = requests.get(url)
data_json = res.json()
except (RequestException, ValueError):
time.sleep(1)
return fetch_proxies1(region_code, n)
arr = data_json["data"] or []
if not arr:
time.sleep(1)
return fetch_proxies1(region_code, n)
result = []
for item in arr:
ip = item["ip"]
port = item["port"]
result.append(f"http://{ip}:{port}")
return result
def fetch_proxies(region_code, n):
"""
@ -90,7 +110,7 @@ def fetch_proxies(region_code, n):
arr = data.get("data") or []
if not arr:
time.sleep(1)
return fetch_proxies(region_code, n)
return fetch_proxies1(region_code, n)
result = []
for item in arr:
@ -113,7 +133,7 @@ def refill_queue(r: redis.Redis, region_name: str, region_code: str,
to_fetch = batch - length
print(f"[{time.strftime('%H:%M:%S')}] {key} 长度 {length} < {low},一次性拉取 {to_fetch} 条…")
proxies = fetch_proxies(region_code, to_fetch)
proxies = fetch_proxies1(region_code, to_fetch)
if proxies:
r.rpush(key, *proxies)
print(f"[{time.strftime('%H:%M:%S')}] 已入队 {len(proxies)} 条 → 新长度 {r.llen(key)}")