คำตอบสั้น
ฉันจะใช้ Python Requests กับพร็อกซีแบบสแตติกได้อย่างไร
หากต้องการใช้ Python Requests กับพร็อกซีแบบสแตติก ให้สร้าง URL พร็อกซีจากโฮสต์ พอร์ต ชื่อผู้ใช้ และรหัสผ่านของ IP ของคุณ ส่งค่าเดียวกันนี้ให้ทั้งคีย์ http และ https ของ proxies= ตั้งค่า timeout และตรวจสอบ exit IP ที่ api.ipify.org SteadyProxy IP แบบสแตติกมีราคา US$2.24 ต่อ 30 วัน ณ ตุลาคม 2026 โดยไม่ต้อง KYC และจ่ายด้วยคริปโต
ข้อเท็จจริงสำคัญมีอะไรบ้าง?
| ติดตั้ง | python -m pip install requests (SOCKS5: requests[socks]) |
|---|---|
| URL พร็อกซี HTTP | http://USERNAME:PASSWORD@host:port, for both the http and https keys |
| URL พร็อกซี SOCKS5 | socks5h://USERNAME:PASSWORD@host:port (พอร์ต SOCKS5 เริ่มต้น 7778) |
| อักขระพิเศษ | เข้ารหัส URL ของชื่อผู้ใช้และรหัสผ่านด้วย urllib.parse.quote |
| พร็อกซีจาก environment | session.trust_env = False จะเพิกเฉยต่อ HTTP_PROXY ที่ตั้งไว้ที่อื่น |
| Timeouts | (10, 30): 10 วินาทีสำหรับเชื่อมต่อ 30 วินาทีสำหรับอ่าน ในตัวอย่างของเรา |
| ทดสอบแล้ว | Python 3.14 และ Requests 2.34, 19 ตุลาคม 2026 ผ่านพร็อกซีทดสอบที่ป้องกันด้วยรหัสผ่าน |
ฉันจะส่งคำขอผ่านพร็อกซีแบบสแตติกตัวเดียวได้อย่างไร
IP แบบสแตติกแต่ละตัวมีโฮสต์ พอร์ต ชื่อผู้ใช้ และรหัสผ่านของตัวเองในแดชบอร์ดของคุณ เก็บค่าเหล่านี้ไว้ใน environment variables ไม่ใช่ในโค้ด สคริปต์ด้านล่างสร้าง URL พร็อกซี ส่งคำขอหนึ่งครั้งไปที่ api.ipify.org และหยุดหาก exit IP ไม่ใช่ตัวที่คุณคาดไว้ จากนั้นจึงอ่านชื่อเครือข่ายจาก ipinfo.io หากรหัสผ่านผิด Requests จะเกิด ProxyError ที่ระบุ 407 Proxy Authentication Required ตามที่การทดสอบของเราแสดง
"""Python Requests through one static proxy, with a check of the exit IP.
Install: python -m pip install requests
"""
import os
from urllib.parse import quote
import requests
HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")
USER = quote(os.environ.get("PROXY_USER", "USERNAME"), safe="")
PASSWORD = quote(os.environ.get("PROXY_PASS", "PASSWORD"), safe="")
EXPECTED_IP = os.environ.get("EXPECTED_IP") # the static IP listed in your dashboard
# The proxy URL starts with http:// even for https:// sites (Requests opens a CONNECT tunnel)
PROXY = "http://" + USER + ":" + PASSWORD + "@" + HOST + ":" + PORT
PROXIES = {"http": PROXY, "https": PROXY}
with requests.Session() as session:
session.trust_env = False # ignore HTTP_PROXY / HTTPS_PROXY set elsewhere on the machine
response = session.get("https://api.ipify.org?format=json", proxies=PROXIES, timeout=(10, 30))
response.raise_for_status()
exit_ip = response.json()["ip"]
print("Exit IP:", exit_ip)
if EXPECTED_IP and exit_ip != EXPECTED_IP:
raise SystemExit("Exit IP differs from the static IP you expected")
page = session.get("https://ipinfo.io/json", proxies=PROXIES, timeout=(10, 30))
page.raise_for_status()
print("Network:", page.json().get("org"), "-", page.json().get("country"))
ทำไม URL พร็อกซีจึงเป็น http:// สำหรับเว็บไซต์ https://
คีย์ของดิกชันนารี proxies คือ scheme ของเว็บไซต์เป้าหมาย ส่วนค่าคือที่อยู่ของพร็อกซี สำหรับเว็บไซต์ https:// นั้น Requests จะขอให้พร็อกซี HTTP เปิดอุโมงค์ CONNECT แล้วรัน TLS ผ่านอุโมงค์นั้นไปยังเว็บไซต์ พร็อกซีจะไม่เห็นหน้าเว็บที่ถอดรหัสแล้ว ดังนั้นทั้งสองคีย์จึงชี้ไปที่ URL พร็อกซี http:// เดียวกัน เปิดการตรวจสอบใบรับรองไว้เสมอ: อย่าตั้ง verify=False เพื่อให้ข้อผิดพลาดพร็อกซีหายไป
ฉันจะให้แต่ละบัญชีมี IP แบบสแตติกของตัวเองได้อย่างไร
จับคู่แต่ละบัญชีหรืองานกับหนึ่ง IP และสร้างหนึ่ง Session ต่อหนึ่งการจับคู่ Session จะเก็บคุกกี้และใช้การเชื่อมต่อซ้ำ และเมื่อ trust_env = False การตั้งค่า proxies ของมันจะไม่ถูกแทนที่ด้วย environment variables ตัวอย่างด้านล่างอ่านหนึ่งบรรทัดต่อหนึ่ง IP ตามลำดับ host, port, username, password ซึ่งคุณคัดลอกจากค่าสี่ค่าในแดชบอร์ดได้
"""One static IP per account or per job with Python Requests.
Each line holds the four values shown for one IP in your dashboard:
host:port:username:password
"""
import os
from urllib.parse import quote
import requests
STATIC_IPS = {
"store-uk": os.environ.get("PROXY_STORE_UK", "gw.steadyproxy.com:7777:USERNAME:PASSWORD"),
"store-de": os.environ.get("PROXY_STORE_DE", "gw.steadyproxy.com:7777:USERNAME:PASSWORD"),
}
def session_for(name):
host, port, user, password = STATIC_IPS[name].split(":", 3)
proxy = "http://" + quote(user, safe="") + ":" + quote(password, safe="") + "@" + host + ":" + port
session = requests.Session()
session.trust_env = False
session.proxies = {"http": proxy, "https": proxy}
return session
for account in STATIC_IPS:
with session_for(account) as s:
ip = s.get("https://api.ipify.org", timeout=(10, 30)).text
print(account, "->", ip)
ฉันจะใช้ SOCKS5 แทน HTTP ได้อย่างไร
ติดตั้ง requests[socks] แล้วแทนที่ http:// ด้วย socks5h:// และแทนที่พอร์ต HTTP ด้วยพอร์ต SOCKS5 ตัว h ทำให้พร็อกซี resolve ชื่อโฮสต์ คำตอบ DNS จึงตรงกับประเทศของ IP โค้ดส่วนที่เหลือเหมือนเดิม ตัวอย่างที่สมบูรณ์และผ่านการทดสอบอยู่ในคู่มือพร็อกซีแบบสแตติก SOCKS5 ทั้งสองพอร์ตของ IP แบบสแตติกหนึ่งตัวนำไปสู่ exit IP เดียวกัน
ข้อผิดพลาดที่พบบ่อยหมายความว่าอะไร
ข้อผิดพลาดแต่ละอย่างชี้ไปที่หนึ่งชั้น
- ProxyError พร้อม 407: ชื่อผู้ใช้หรือรหัสผ่านผิด หรือเครื่องนี้ไม่อยู่ใน allowlist ของคุณ
- ConnectTimeout: โฮสต์หรือพอร์ตผิด หรือไฟร์วอลล์ฝั่งคุณบล็อกทราฟฟิกขาออกไปยังพอร์ตพร็อกซี
- ReadTimeout: เป้าหมายหรือเส้นทางช้า ลองใหม่ภายหลังและคง read timeout ไว้
- SSLError: ปัญหาใบรับรองที่เป้าหมายหรือที่เครื่องของคุณ อย่าปิดการตรวจสอบ
- 403 หรือ 429 จากเป้าหมาย: เว็บไซต์ปฏิเสธหรือจำกัดอัตราคำขอ ชะลอลง
หากหนึ่ง IP ล้มเหลวทุกคำขอเป็นเวลาหนึ่งชั่วโมง ให้ติดต่อฝ่ายสนับสนุน กฎการเปลี่ยนทดแทนของเรา: หาก IP ใช้งานไม่ได้ ให้เขียนถึงฝ่ายสนับสนุน: เราจะซ่อมแซมหรือเปลี่ยนเป็น IP อื่นในประเทศเดียวกันเมื่อมีสต็อก
ผู้คนยังถามอะไรอีกเกี่ยวกับ Python และพร็อกซีแบบสแตติก
ทำไมต้องตั้งทั้งคีย์ http และ https
Requests เลือกพร็อกซีตาม scheme ของ URL เป้าหมาย หากไม่มีคีย์ https คำขอไปยังเว็บไซต์ https:// จะออกไปโดยตรงจาก IP ของคุณเอง การตั้งทั้งสองคีย์เป็น URL พร็อกซีเดียวกันจะส่งทุกคำขอผ่าน IP แบบสแตติก การตรวจสอบที่ api.ipify.org ในสคริปต์จะจับคีย์ที่ขาดหายได้ทันที
ทำไมต้องเข้ารหัส URL ของชื่อผู้ใช้และรหัสผ่าน
อักขระอย่าง @, : และ / มีความหมายภายใน URL รหัสผ่านที่มี @ จะถูกอ่านเป็นจุดสิ้นสุดของส่วนล็อกอิน urllib.parse.quote พร้อม safe='' จะเข้ารหัสอักขระเหล่านี้ และ Requests จะถอดรหัสก่อนส่งข้อมูลล็อกอินไปยังพร็อกซี วิธีนี้ใช้ได้กับทั้ง URL แบบ HTTP และ socks5h://
ทำไมต้องตั้ง trust_env เป็น False
โดยค่าเริ่มต้น Requests จะอ่าน HTTP_PROXY, HTTPS_PROXY และ NO_PROXY จาก environment และเอกสารเตือนว่าพร็อกซีจาก environment อาจแทนที่การตั้งค่า proxies ของ Session การตั้งค่า VPN หรือองค์กรอาจทำให้บางคำขอถูกส่งไปที่อื่น trust_env = False ทำให้โค้ดใช้เฉพาะพร็อกซีที่คุณส่งเข้าไปเท่านั้น
ฉันใช้โค้ดเดียวกันกับ httpx หรือ aiohttp ได้ไหม
ได้ แนวคิดเหมือนกัน: URL พร็อกซีที่สร้างจากโฮสต์ พอร์ต ชื่อผู้ใช้ และรหัสผ่าน พร้อม timeout และการตรวจสอบ exit IP ชื่อพารามิเตอร์แตกต่างกันตามไลบรารีและเวอร์ชัน ดังนั้นให้ดูเอกสารพร็อกซีของไลบรารีนั้น ใช้หนึ่งไคลเอนต์ต่อหนึ่ง IP แบบสแตติก เช่นเดียวกับ Session ใน Requests
ฉันจะเก็บข้อมูลรับรองออกจากรีโพซิทอรีได้อย่างไร
อ่านค่าจาก environment variables หรือ secret manager ตามที่ตัวอย่างทำ และอย่าคอมมิตไฟล์ .env ที่มีค่าจริง อย่าพิมพ์ URL พร็อกซีในล็อก เพราะมีรหัสผ่านอยู่ หากใช้วิธี IP allowlist สคริปต์บนเครื่องที่อยู่ใน allowlist ไม่ต้องใช้รหัสผ่านพร็อกซีเลย
IP แบบสแตติกหนึ่งตัวรองรับคำขอกี่ครั้งใน Python
พร็อกซีคิดค่าบริการต่อ IP และต่อ 30 วัน ไม่ใช่ต่อ GB คิดค่าบริการต่อ IP และต่อ 30 วัน ไม่ใช่ต่อ GB และมีการใช้งานอย่างเป็นธรรม ขีดจำกัดจริงคือเว็บไซต์เป้าหมายซึ่งอาจจำกัดอัตราต่อหนึ่ง IP รักษาระดับ concurrency ให้พอเหมาะต่อ IP เพิ่มการหน่วงเวลา และปฏิบัติตามข้อกำหนดของแต่ละเว็บไซต์ หากต้องการปริมาณมากขึ้นในงานเดียว ให้กระจายงานไปยังหลาย IP ดูต้องใช้ IP แบบสแตติกกี่ตัว
คู่มือนี้ใช้แหล่งข้อมูลใด? (3)
- Requests advanced usage: proxies, SOCKS, timeouts — Requests (2026-10-19)
- urllib.parse: quote — Python Software Foundation (2026-10-19)
- ipify API — ipify (2026-10-19)