ProxyScrape پایتون و وب: نحوه واکشی، اعتبارسنجی و چرخش پروکسیها
ProxyScrape لیستهای پروکسی قابل دانلود و یک API ارائه میدهد، اما لیستهای رایگان زیرساخت تولید نیستند. در اینجا یک گردش کار امن پایتون برای واکشی، اعتبارسنجی و چرخش پروکسیها، به همراه نکاتی که باید در داشبورد وب بررسی کنید، آورده شده است.
ProxyScrape اغلب همراه با پایتون جستجو میشود زیرا کاربران میخواهند لیست پروکسی را واکشی کنند، آن را تست کنند و در یک اسکریپت بچرخانند. داشبورد وب و API با هم همپوشانی دارند، اما اهداف متفاوتی را دنبال میکنند. این راهنما بر یک گردش کار امن تمرکز دارد: واکشی، اعتبارسنجی، چرخش، و دانستن اینکه چه زمانی پروکسیهای رایگان ابزار اشتباهی هستند.
آنچه از ProxyScrape دریافت میکنید: لیستهای وب، API و استخرهای پولی
ProxyScrape دانلود لیست پروکسی و دسترسی API را همراه با خدمات پروکسی تجاری ارائه میدهد. نقاط پایانی، پروتکلها، فرمتها، محدودیتها و مکانهای موجود ممکن است تغییر کنند، بنابراین همیشه آنها را در داشبورد ProxyScrape یا مستندات فعلی خود تأیید کنید. یک نقطه پایانی که در یک آموزش قدیمی پیدا کردهاید را بدون بررسی در کد خود hardcode نکنید.
لیستهای پروکسی رایگان برای یادگیری و تست بهترین هستند. آنها معمولاً برای اسکرپینگ تولیدی، ورود به سیستم، یا هر داده حساس مناسب نیستند زیرا زمان کارکرد، سرعت و قابلیت اعتماد بسیار متفاوت است.
واکشی لیست پروکسی در پایتون
با ذخیره URL API در یک متغیر محیطی شروع کنید، نه اینکه آن را در کد خود commit کنید.
import os
import requests
API_URL = os.environ['PROXYSCRAPE_API_URL'] # copy from your ProxyScrape dashboard/docs
response = requests.get(API_URL, timeout=15)
response.raise_for_status()
lines = [line.strip() for line in response.text.splitlines() if line.strip()]
print(f'Fetched {len(lines)} proxies')
print(lines[:5])
اگر API JSON برمیگرداند، قبل از انتخاب فیلدها شکل پاسخ را بررسی کنید. نام فیلدها ممکن است تغییر کنند.
data = response.json()
# Adjust this to match the current API response
proxies = [item['proxy'] for item in data.get('proxies', [])]
اعتبارسنجی پروکسیها قبل از اینکه وقت شما را تلف کنند
یک لیست پروکسی تا زمانی که آن را تست نکنید مفید نیست. در برابر یک endpoint بیخطر بازتاب IP اعتبارسنجی کنید و ثبت کنید کدام پروکسیها کار میکنند.
import concurrent.futures
import requests
TEST_URL = 'https://api.ipify.org?format=json'
def check(proxy):
# Use http:// for HTTP proxies.
# For SOCKS5, install requests[socks] and use socks5h://host:port.
proxy_url = f'http://{proxy}'
proxies = {'http': proxy_url, 'https': proxy_url}
try:
response = requests.get(TEST_URL, proxies=proxies, timeout=8)
response.raise_for_status()
return proxy, response.json()
except Exception:
return proxy, None
working = []
with concurrent.futures.ThreadPoolExecutor(max_workers=50) as pool:
for proxy, result in pool.map(check, lines[:200]):
if result:
working.append(proxy)
print('OK', proxy, result)
print(f'Working: {len(working)}')
برای پروکسیهای SOCKS5، وقتی DNS از راه دور میخواهید از socks5h://host:port استفاده کنید. برای پروکسیهای احراز هویت شده، قالب معمولاً http://user:pass@host:port یا socks5h://user:pass@host:port است، اما قالب ارائهدهنده را تأیید کنید.
چرخش پروکسیها در یک اسکریپت پایتون
وقتی استخری از پروکسیهای کارآمد دارید، آنها را با یک استراتژی قابل پیشبینی بچرخانید. چرخش به ازای هر درخواست آسان است، اما میتواند نشستها را بشکند و بررسیهای ورود را فعال کند.
import itertools
import requests
from requests.adapters import HTTPAdapter
working_proxies = working # from the validator above
proxy_cycle = itertools.cycle(working_proxies)
session = requests.Session()
session.mount('https://', HTTPAdapter(max_retries=2))
urls = [
'https://example.com/page/1',
'https://example.com/page/2',
'https://example.com/page/3',
]
for url in urls:
proxy = next(proxy_cycle)
proxies = {
'http': f'http://{proxy}',
'https': f'http://{proxy}',
}
try:
response = session.get(url, proxies=proxies, timeout=12)
print(response.status_code, proxy, url)
except requests.RequestException as exc:
print('FAILED', proxy, exc)
اگر سایت هدف به یک نشست پایدار نیاز دارد، به جای چرخش هر درخواست از نشستهای چسبنده (sticky) استفاده کنید. بسیاری از ارائهدهندگان این کار را از طریق یک شناسه نشست در نام کاربری پیادهسازی میکنند. مستندات ارائهدهنده خود را برای قالب دقیق بررسی کنید؛ حدس نزنید.
استفاده از داشبورد وب ProxyScrape
سمت وب برای بررسیهای سریع مفید است:
- لیستی را با قالبی که نیاز دارید دانلود کنید.
- بر اساس پروتکل، مانند HTTP یا SOCKS5، در صورت وجود فیلتر کنید.
- بر اساس کشور یا سطح ناشناسی در صورت وجود فیلتر کنید.
- نقطه پایانی API را برای خودکارسازی کپی کنید.
- بررسی کنید که لیست رایگان است یا به یک طرح پولی گره خورده است.
- تأیید کنید که سایت هدف نوع دسترسی مورد نظر شما را مجاز میداند.
اگر لیست دانلود شده در عرض چند دقیقه قدیمی شود، این برای پروکسیهای رایگان طبیعی است. با آن به عنوان یکبارمصرف رفتار کنید.
بررسیهای اخلاقی، ایمنی و قانونی
- شرایط سایت هدف، robots.txt و محدودیتهای نرخ را رعایت کنید.
- اعتبارنامهها، دادههای شخصی یا دادههای پرداخت را از طریق پروکسیهای رایگان غیرقابل اعتماد ارسال نکنید.
- از TLS استفاده کنید و گواهیها را تأیید کنید.
- اگر دادههای شخصی را پردازش میکنید، GDPR، CCPA و سایر قوانین قابل اجرا را بررسی کنید.
- وقتی به قابلیت اطمینان و پشتیبانی نیاز دارید، از پروکسیهای مسکونی یا دیتاسنتری پولی استفاده کنید.
نتیجهگیری
ProxyScrape را میتوان هم از داشبورد وب و هم از پایتون استفاده کرد، اما گردش کار مهمتر از منبع است. لیست فعلی را واکشی کنید، آن را اعتبارسنجی کنید، با هدف بچرخانید، و پروکسیهای رایگان را در جایی که به آن تعلق دارند نگه دارید: در تست و یادگیری.