چگونه ابزارهای CLI لینوکس را از طریق پروکسیهای SOCKS5 ProxyScrape مسیریابی کنیم
curl، wget، git، proxychains و Python را در لینوکس از طریق endpointهای HTTP و SOCKS5 ProxyScrape عبور دهید، با مدیریت امن اعتبارنامهها و تنظیم SOCKS5h بدون نشت DNS.
مرور کلی
در لینوکس، بیشتر ابزارها یک تنظیم پروکسی سراسری واحد را نمیخوانند — هر برنامه به فایل پیکربندی خودش یا به متغیرهای محیطی http_proxy، https_proxy و all_proxy نگاه میکند. ProxyScrape از HTTP و SOCKS5 پشتیبانی میکند، و این راهنما نشان میدهد چگونه ابزارهای خط فرمان رایج را به endpoint شما اشاره دهید.
وقتی میخواهید جستجوهای DNS در پروکسی انجام شوند نه بهصورت محلی، SOCKS5 را با طرح socks5h ترجیح دهید. این کار از نشت DNS جلوگیری میکند و از شکست در مواردی که مقصد از نامهایی استفاده میکند که resolver محلی شما نمیتواند ببیند، پیشگیری میکند.
مراحل
-
endpoint را جمعآوری کنید. در داشبورد ProxyScrape، host، پورت HTTP، پورت SOCKS5 و نام کاربری و رمز عبور خود را یادداشت کنید.
-
اعتبارنامهها را برای نشست 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"
- پروکسی HTTP را با curl تست کنید.
curl -x "http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT" https://ipinfo.io/ip
- SOCKS5 را تست کنید.
--socks5-hostnameDNS را از طریق پروکسی resolve میکند. احراز هویت نام کاربری/رمز عبور SOCKS5 به curl نسخه 7.51.0 یا جدیدتر نیاز دارد:
curl --socks5-hostname "$PS_HOST:$PS_SOCKS_PORT" -U "$PS_USER:$PS_PASS" https://ipinfo.io/ip
- متغیرهای محیطی را برای ابزارهایی که آنها را در نظر میگیرند تنظیم کنید.
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 یا مستندات خود ابزار تأیید کنید.
- 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 محدود کنید.
- باینریهای دلخواه را با proxychains-ng مسیریابی کنید.
proxychains-ngرا نصب کنید و endpoint خود را بهproxychains.confاضافه کنید:
socks5 HOST PORT USER PASS
proxychains-ng فیلدهای اختیاری نام کاربری و رمز عبور را بعد از پورت میپذیرد؛ اگر نسخهساخت شما آنها را رد میکند، مستندات توزیع خود را برای آن نسخه بررسی کنید. سپس هر دستوری را پیشوند کنید:
proxychains4 curl https://ipinfo.io/ip
- از 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] را نصب کنید.
- رازها را از فایلهای متنی ساده دور نگه دارید. متغیرهای محیطی یا
~/.netrcباchmod 600را ترجیح دهید، و به یاد داشته باشید که اعتبارنامههای منتقلشده مستقیماً روی خط فرمان میتوانند برای سایر کاربران از طریقps auxقابل مشاهده باشند.