การกำหนดเส้นทาง SOCKS ใน aiohttp ด้วย aiohttp-socks
ใช้ตัวเชื่อมต่อที่เข้ากันได้และเข้าใจ SOCKS แทนการคัดลอกตัวอย่างพร็อกซี aiohttp เก่าที่มีคลาสตัวเชื่อมต่อถูกลบไปแล้ว
aiohttp จัดทำเอกสารการสนับสนุนพร็อกซี HTTP ผ่านตัวเลือกคำขอ ปลายทาง SOCKS ต้องการการทำงานที่พูด SOCKS การเปลี่ยนพอร์ตของ URL พร็อกซีเป็น 1080 ไม่ได้ให้การทำงานนั้น
ภายในฟังก์ชัน async ให้ใช้ตัวเชื่อมต่อที่โครงการ aiohttp-socks ซึ่งได้รับการดูแลจัดหาให้:
import aiohttp
from aiohttp_socks import ProxyConnector
connector = ProxyConnector.from_url('socks5://203.0.113.10:1080')
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get('https://example.com/') as response:
body = await response.read()การนี้อาศัยว่าแพ็กเกจตัวเชื่อมต่อมีอยู่แล้วและเข้ากันได้กับเวอร์ชัน aiohttp ในแอปพลิเคชัน ปลายทางเป็นเพียงตัวอย่าง รายการพร็อกซี SOCKS5 เสนอผู้สมัครสาธารณะสำหรับ URL ของตัวเชื่อมต่อ กำหนดค่านโยบายหมดเวลาและขนาดการตอบสนองสำหรับภาระงานจริง
คำตอบเก่าอ้างถึงแพ็กเกจและชื่อตัวเชื่อมต่อที่ต่างกัน: aiosocks, aiosocksy และ aiohttp-socks ไม่ใช่เส้นทางการนำเข้าที่ใช้แทนกันได้ อ่านข้อกำหนดและตัวอย่างของแพ็กเกจที่ใช้จริง การรวมคลาสของโครงการหนึ่งกับอาร์กิวเมนต์ของอีกโครงการอาจล้มเหลวก่อนที่จะพยายามเชื่อมต่อพร็อกซีใด ๆ
เก็บตัวเชื่อมต่อและอายุของเซสชันไว้ด้วยกัน และตรวจสอบพฤติกรรมการแปลงชื่อโฮสต์ในจุดที่สำคัญ การส่ง URL ของ SOCKS ไปยังตัวเลือกพร็อกซี HTTP ที่ไม่เกี่ยวข้องไม่ใช่สิ่งทดแทนเส้นทางที่จัดทำเอกสารไว้ของตัวเชื่อมต่อ