Skip to content
intermediate

چگونه ابزارهای CLI لینوکس را از طریق پروکسی‌های SOCKS5 ProxyScrape مسیریابی کنیم

curl، wget، git، proxychains و Python را در لینوکس از طریق endpointهای HTTP و SOCKS5 ProxyScrape عبور دهید، با مدیریت امن اعتبارنامه‌ها و تنظیم SOCKS5h بدون نشت DNS.

لینوکس SOCKS5 وب اسکرپینگ

مرور کلی

در لینوکس، بیشتر ابزارها یک تنظیم پروکسی سراسری واحد را نمی‌خوانند — هر برنامه به فایل پیکربندی خودش یا به متغیرهای محیطی http_proxy، https_proxy و all_proxy نگاه می‌کند. ProxyScrape از HTTP و SOCKS5 پشتیبانی می‌کند، و این راهنما نشان می‌دهد چگونه ابزارهای خط فرمان رایج را به endpoint شما اشاره دهید.

وقتی می‌خواهید جستجوهای DNS در پروکسی انجام شوند نه به‌صورت محلی، SOCKS5 را با طرح socks5h ترجیح دهید. این کار از نشت DNS جلوگیری می‌کند و از شکست در مواردی که مقصد از نام‌هایی استفاده می‌کند که resolver محلی شما نمی‌تواند ببیند، پیشگیری می‌کند.

مراحل

  1. endpoint را جمع‌آوری کنید. در داشبورد ProxyScrape، host، پورت HTTP، پورت SOCKS5 و نام کاربری و رمز عبور خود را یادداشت کنید.

  2. اعتبارنامه‌ها را برای نشست shell خود export کنید. از تایپ مستقیم رمزهای عبور در دستورها خودداری کنید، چون در تاریخچه shell ثبت می‌شوند:

read -rsp "ProxyScrape username: " PS_USER && echo
read -rsp "ProxyScrape password: " PS_PASS && echo
export PS_HOST="your-host"
export PS_HTTP_PORT="your-http-port"
export PS_SOCKS_PORT="your-socks5-port"
  1. پروکسی HTTP را با curl تست کنید.
curl -x "http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT" https://ipinfo.io/ip
  1. SOCKS5 را تست کنید. --socks5-hostname DNS را از طریق پروکسی resolve می‌کند. احراز هویت نام کاربری/رمز عبور SOCKS5 به curl نسخه 7.51.0 یا جدیدتر نیاز دارد:
curl --socks5-hostname "$PS_HOST:$PS_SOCKS_PORT" -U "$PS_USER:$PS_PASS" https://ipinfo.io/ip
  1. متغیرهای محیطی را برای ابزارهایی که آن‌ها را در نظر می‌گیرند تنظیم کنید.
export http_proxy="http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT"
export https_proxy="$http_proxy"
export no_proxy="localhost,127.0.0.1,.local"

برای SOCKS5، از export all_proxy="socks5h://$PS_USER:$PS_PASS@$PS_HOST:$PS_SOCKS_PORT" استفاده کنید. هر برنامه‌ای all_proxy را رعایت نمی‌کند؛ با curl -v یا مستندات خود ابزار تأیید کنید.

  1. wget را پیکربندی کنید. wget از پروکسی‌های SOCKS پشتیبانی نمی‌کند، بنابراین از پورت HTTP در ~/.wgetrc استفاده کنید:
use_proxy = yes
http_proxy = http://USER:PASS@HOST:PORT
https_proxy = http://USER:PASS@HOST:PORT

سپس دسترسی را با chmod 600 ~/.wgetrc محدود کنید.

  1. باینری‌های دلخواه را با proxychains-ng مسیریابی کنید. proxychains-ng را نصب کنید و endpoint خود را به proxychains.conf اضافه کنید:
socks5 HOST PORT USER PASS

proxychains-ng فیلدهای اختیاری نام کاربری و رمز عبور را بعد از پورت می‌پذیرد؛ اگر نسخه‌ساخت شما آن‌ها را رد می‌کند، مستندات توزیع خود را برای آن نسخه بررسی کنید. سپس هر دستوری را پیشوند کنید:

proxychains4 curl https://ipinfo.io/ip
  1. از Python استفاده کنید.
import os, requests
url = f"http://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_HTTP_PORT']}"
proxies = {"http": url, "https": url}
print(requests.get("https://ipinfo.io/ip", proxies=proxies, timeout=15).text)

اگر پورت SOCKS5 را ترجیح می‌دهید، requests[socks] را نصب کنید.

  1. رازها را از فایل‌های متنی ساده دور نگه دارید. متغیرهای محیطی یا ~/.netrc با chmod 600 را ترجیح دهید، و به یاد داشته باشید که اعتبارنامه‌های منتقل‌شده مستقیماً روی خط فرمان می‌توانند برای سایر کاربران از طریق ps aux قابل مشاهده باشند.