שילובים · מתחילים

כיצד להשתמש בפרוקסי עם בקשות Python, httpx ו- aiohttp

שלוש שורות של תצורה לכל ספרייה, ולאחר מכן אותו תחביר שם בכל מקום: מדינה, עיר והפעלה לחיות בכתובת ה-proxy, כך שער אחד משרת כל עבודה.

3 דקות קריאה 6 חלקים חוות דעת צוות העריכה Proxy Cyber

כתובת ה-proxy#

כל ספריית Python HTTP לוקחת פרוקסי ככתובת URL. עם Key פרוקסי כתובת האתר נושאת את האישורים שלך ואת מיקוד פרמטרים בשם המארח; שם המארח הוא השער והנמל בוחר בפרוטוקול.

כתובות אתרים של פרוקסי
# Rotating: a new United States household on every new connection
http://USER-cc-us:PASS@res.proxy-cyber.com:9000

# Sticky: one Berlin household held for 30 minutes under the id "job42"
http://USER-cc-de-city-berlin-sid-job42-ttl-30m:PASS@res.proxy-cyber.com:9000

# SOCKS5 with remote DNS (socks5h), same parameters
socks5h://USER-cc-us:PASS@res.proxy-cyber.com:9001

בקשות#

חיבור חוזר ומשימות IP הן פקדים שונים. מושב לקוח משתמש שקעים; רק את המחוג שהוקצה רוטציה הפעלה דביקה התנהגות. השתמש פרמטרים ההפעלה שסופקו עם השירות שלך, ולאמת את היציאה על פני כמה בקשות. סגירת שקע או שליחת חיבור: סגור אינו מבטיח IP שונה.

בקשות
import requests

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
proxies = {"http": PROXY, "https": PROXY}

# One request, one exit
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=30)
print(r.text)

# A sticky flow: same exit for every request of this session
sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000"
s = requests.Session()
s.proxies = {"http": sticky, "https": sticky}
s.get("https://example.com/product/1", timeout=30)
s.post("https://example.com/cart", json={"id": 1}, timeout=30)

איפוס סיסמה#

httpx לוקח אחד proxy= ויכוח (גרסאות ישנות יותר: proxies=). הוא תומך HTTP/2 ליעד דרך המנהרה Connect ועובד באותה הדרך בקוד async.

איפוס סיסמה
import httpx

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

with httpx.Client(proxy=PROXY, timeout=30) as client:
    print(client.get("https://api.ipify.org").text)

# async, one sticky exit per task
import asyncio

async def fetch(sid: str, url: str) -> str:
    proxy = f"http://USER-cc-us-sid-{sid}-ttl-10m:PASS@res.proxy-cyber.com:9000"
    async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
        return (await client.get(url)).text

asyncio.run(fetch("task1", "https://api.ipify.org"))

aiohttp#

aiohttp לוקח את פרוקסי לכל בקשה או לכל הפעלה ומדבר פרוקסי HTTP באופן מקורי; SOCKS5 צריך את aiohttp-socks מחבר.

aiohttp
import aiohttp, asyncio

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.ipify.org", proxy=PROXY, timeout=aiohttp.ClientTimeout(total=30)) as r:
            print(await r.text())

asyncio.run(main())

רוטציה, שמירה על חיים וניסיונות חוזרים#

  • חיבור TCP חדש הוא חיבור תחבורה חדש, לא הוכחה ליציאה חדשה. מצב הגיוס שהוקצה לשער מחליט כיצד החיבור מנותב.
  • השתמש במזהה הפעלה נפרד עבור כל זרימת עבודה עצמאית, שבה השער שהוקצה תומך בו. אשר את הפרמטרים המותרים של משך ומיקום בפרטי החיבור שלך. התקן מגורים יכול להתנתק לפני משך הזמן המבוקש; הפעלה דביקה אינה ערובה לאותו IP במשך ימים. עבור כתובת קבועה, השווה מוצר סטטי ייעודי.
  • סיווג התגובה לפני ניסיון חוזר. 403 עשוי להצביע על כלל גישה ש-IP אחר לא יפתור. עבור 429, כבד את שיעור ה-Retry-After וצמצם את הבקשה; השתמש בגיבוי מוגבל לחיבור זמני או כשלי שרת. נסה פעולות לשינוי מצב רק כאשר אתה יכול למנוע פעולות כפולות.
  • הגדר פסקי זמן לסוג היציאה: 15 s להתחבר ו 45 s לקרוא עבור מגורים, יותר לנייד.

שמירת ג'יגה-בתים#

תעבורה קבועה יחויבה לכל GB בשני הכיוונים. בקש תגובות דחוסות (Accept-Encoding: gzip, br הוא מופעל כברירת מחדל בספריות אלה), מעדיף נקודות קצה של JSON ל- HTML, ולעולם לא להוריד תמונות, גופנים או מדיה אלא אם כן הם הנתונים. דף 350 KB הוא זול; דף 4 MB עם נכסים אינו.

שאלות שאנשים שואלים#

למה אני ממשיך לקבל את אותו IP עם בקשות?

כתובות IP חוזרות יכולות לנבוע מבריכת חיבור, הפעלה דביקה פעילה או המאגר כתובות הזמינה. השווה את מצב הניתוב שהוקצה ובדוק מספר בקשות עם חותמות זמן. הפעלה מנהלת חיבורים ועוגיות; היא אינה בוחרת בעצמה את יציאת הפרוקסי.

האם אני צריך פרוקסי שונה עבור אתרי HTTPS?

לא. אותה כתובת URL של http:// פרוקסי מטפלת ביעדי HTTPS דרך מנהרה של חיבור; TLS פועל מקצה לקצה בין הקוד שלך לאתר.

האם ניתן להשתמש באותו קוד עבור פרוקסי לנייד?

Yes: replace res.proxy-cyber.com with mob.proxy-cyber.com. Ports, credentials and parameters are identical.

החשבון שלך

נהלו את כל הפרוקסי בחשבון אחד

השווה רשתות, לבצע הזמנות ולעקוב אחר בקשות האיזון והתמיכה שלך מלוח מחוונים אחד. הצוות שלנו סוקר תשלומים ומספק פרטי חיבור לאחר הלידה.

יצירת חשבון