feat: 添加 fetch_proxies1 方法以从新 API 获取代理 IP
This commit is contained in:
parent
d26828449b
commit
cdc1bede9e
@ -4,9 +4,11 @@
|
|||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
|
from json.decoder import JSONObject
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
import redis
|
import redis
|
||||||
import requests
|
import requests
|
||||||
|
from pydantic.v1 import JsonError
|
||||||
from requests import RequestException
|
from requests import RequestException
|
||||||
import DB
|
import DB
|
||||||
|
|
||||||
@ -46,6 +48,24 @@ def fetch_proxies2(region_code, n):
|
|||||||
url = "http://" + region_code.lower() + "-pr.thordata.net:25000"
|
url = "http://" + region_code.lower() + "-pr.thordata.net:25000"
|
||||||
return [url for _ in range(n)]
|
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®ions={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):
|
def fetch_proxies(region_code, n):
|
||||||
"""
|
"""
|
||||||
@ -90,7 +110,7 @@ def fetch_proxies(region_code, n):
|
|||||||
arr = data.get("data") or []
|
arr = data.get("data") or []
|
||||||
if not arr:
|
if not arr:
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
return fetch_proxies(region_code, n)
|
return fetch_proxies1(region_code, n)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for item in arr:
|
for item in arr:
|
||||||
@ -113,7 +133,7 @@ def refill_queue(r: redis.Redis, region_name: str, region_code: str,
|
|||||||
|
|
||||||
to_fetch = batch - length
|
to_fetch = batch - length
|
||||||
print(f"[{time.strftime('%H:%M:%S')}] {key} 长度 {length} < {low},一次性拉取 {to_fetch} 条…")
|
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:
|
if proxies:
|
||||||
r.rpush(key, *proxies)
|
r.rpush(key, *proxies)
|
||||||
print(f"[{time.strftime('%H:%M:%S')}] 已入队 {len(proxies)} 条 → 新长度 {r.llen(key)}")
|
print(f"[{time.strftime('%H:%M:%S')}] 已入队 {len(proxies)} 条 → 新长度 {r.llen(key)}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user