วิธีตั้งค่าและหมุนเวียนพร็อกซีใน Python Scrapy

อัปเดตเมื่อ:

เอนจิน Twisted แบบอะซิงโครนัสของ Scrapy มาพร้อมมิดเดิลแวร์ในตัวคือ HttpProxyMiddleware (ทำงานที่ลำดับความสำคัญ 750) ซึ่งจะแยกวิเคราะห์สตริง http://user:pass@ip:port ที่กำหนดใน request.meta['proxy'] โดยอัตโนมัติ เพียงเขียน Downloader Middleware สั้นๆ ประมาณ 10 บรรทัดที่ลำดับความสำคัญ 740 สไปเดอร์ของคุณก็จะสามารถสลับใช้งานพูล IP แบบคงที่ที่ไม่จำกัดปริมาณข้อมูลของ VinaProxy ได้ทันที

Scrapy · HTTP Proxy Format
request.meta['proxy'] = 'http://user:pass@ip:port'
IPv4 ส่วนตัว (Datacenter)
🇺🇸 United States
มีสินค้า
เริ่มต้น
₫20,000 / IP / เดือน
≈ US$0.74 · ชำระเป็น VND
ส่วนลดตามจำนวนการสั่งซื้อ
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
ซื้อ United States
IPv4 ส่วนตัว (Datacenter)
🇬🇧 United Kingdom
มีสินค้า
เริ่มต้น
₫20,000 / IP / เดือน
≈ US$0.74 · ชำระเป็น VND
ส่วนลดตามจำนวนการสั่งซื้อ
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
ซื้อ United Kingdom
พร็อกซีตามแพลตฟอร์ม:web-scrapingseo-rank-trackingamazon

ลำดับมิดเดิลแวร์พร็อกซีและการควบคุมความพร้อมกันใน Scrapy

เนื่องจาก HttpProxyMiddleware ทำงานที่ลำดับความสำคัญ 750 เพื่อถอด user:pass ออกจาก URL และแปลงเป็นเฮดเดอร์ Proxy-Authorization ดังนั้นมิดเดิลแวร์ที่กำหนดค่า request.meta['proxy'] จึงต้องทำงานที่ตัวเลขต่ำกว่า (เช่น 740):

การตั้งค่าใน Scrapyค่าที่แนะนำบทบาทหน้าที่ทางเทคนิค
request.meta['proxy']'http://user:pass@ip:port'กำหนดให้คำขอส่งผ่านพร็อกซี VinaProxy ตามที่ระบุ
ลำดับความสำคัญ Middleware740 (ก่อน 750)ช่วยให้มั่นใจว่า HttpProxyMiddleware จะนำข้อมูลล็อกอินไปแปลงเป็นเฮดเดอร์ได้ทัน
CONCURRENT_REQUESTS_PER_IP2 ถึง 4จำกัดจำนวนซ็อกเก็ตพร้อมกันต่อ IP พร็อกซี เพื่อหลีกเลี่ยงการถูกจำกัดด้วย HTTP 429
AUTOTHROTTLE_ENABLEDTrueปรับเวลาหน่วงของการดึงข้อมูลโดยอัตโนมัติตามการตอบสนองของเซิร์ฟเวอร์ปลายทาง

แนวทางปฏิบัติที่ดีที่สุดสำหรับการดึงข้อมูลปริมาณมหาศาลด้วย Scrapy

  • โหลดรายการพร็อกซี VinaProxy ในเมธอด from_crawler() และสุ่มเลือกโหนดด้วย request.meta['proxy'] = random.choice(self.proxies) ภายใน process_request()
  • เปิดใช้งาน RANDOMIZE_DOWNLOAD_DELAY = True คู่กับ DOWNLOAD_DELAY = 1.0 เพื่อให้ช่วงเวลาคำขอของแต่ละ IP มีความแปรผันตามธรรมชาติ
  • เมื่อพบสถานะที่ต้องลองใหม่ (429 หรือ 503) ให้เลือกพร็อกซีใหม่จากพูลก่อนจะนำคำขอกลับเข้าคิว

ขั้นตอนทีละขั้น

  1. 1

    แปลงรายการพร็อกซีให้อยู่ในรูป http://user:pass@ip:port

    นำรายการ VinaProxy ของคุณมาวางใน เครื่องมือแปลงรูปแบบพร็อกซี เพื่อสร้าง URL ที่ถูกต้อง

  2. 2

    สร้าง ProxyPoolMiddleware ในไฟล์ middlewares.py

    กำหนดเมธอด process_request(self, request, spider) โดยตั้งค่า request.meta['proxy'] = random.choice(self.proxies)

  3. 3

    ลงทะเบียนที่ลำดับความสำคัญ 740 ใน settings.py

    เพิ่ม 'myproject.middlewares.ProxyPoolMiddleware': 740 ใน DOWNLOADER_MIDDLEWARES และกำหนด CONCURRENT_REQUESTS_PER_IP = 2

  4. 4

    ทดสอบด้วย scrapy shell หรือ scrapy crawl

    ส่งคำขอทดสอบไปยัง https://vinaproxy.com/api/my-ip เพื่อตรวจสอบการหมุนเวียน IP และการยืนยันตัวตน

คำถามที่พบบ่อย

ทำไมมิดเดิลแวร์พร็อกซีที่กำหนดเองใน Scrapy ถึงไม่ทำงานเมื่อตั้งลำดับความสำคัญไว้ที่ 800?

HttpProxyMiddleware ในตัวของ Scrapy ทำงานที่ลำดับความสำคัญ 750 หากคุณตั้งมิดเดิลแวร์ไว้ที่ 800 (หลัง 750) ค่า user:pass จะไม่ถูกแปลงเป็นเฮดเดอร์ Proxy-Authorization จึงต้องตั้งค่าให้ต่ำกว่า 750 เสมอ (เช่น 740)

Scrapy มีการรักษาการเชื่อมต่อแบบต่อเนื่อง (Keep-Alive) ไปยังพร็อกซีแต่ละตัวหรือไม่?

ใช่ พูลการเชื่อมต่อของ Twisted จะรักษาการเชื่อมต่อ TCP keep-alive อย่างต่อเนื่องสำหรับแต่ละเอนด์พอยต์ ช่วยประหยัดเวลาในการสร้างการเชื่อมต่อใหม่

พร็อกซี VinaProxy มีการคิดปริมาณข้อมูลเมื่อดึงข้อมูลเป็นล้านๆ หน้าใน Scrapy หรือไม่?

ไม่มี ทุกแพ็กเกจ Dedicated IPv4 และ Static ISP ของ VinaProxy มาพร้อมปริมาณการใช้งานแบบไม่จำกัดต่อเดือน

ขยายสเกล Scrapy Spider ด้วยพูล IP แบบคงที่ใช้งานได้ไม่จำกัด

Dedicated IPv4 และ Static ISP พร็อกซียกชุดใน 7 ประเทศ พร้อมเปิดใช้งานได้ทันที

ซื้อพร็อกซีสำหรับ Scrapy

บทความที่เกี่ยวข้อง

พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ Web Scraping: พูล IPv4 และ ISP แบบเฉพาะไม่จำกัด สำหรับบอทดูดข้อมูล 24/7
พร็อกซี HTTP(S) IPv4 แบบเฉพาะและ ISP แบบคงที่ความเร็วสูงสำหรับ Python, Playwright, Selenium และ Scrapy พร้อมแบนด์วิดท์รายเดือนไม่จำกัด
วิธีตั้งค่าพร็อกซี
วิธีใช้พร็อกซีใน Python Requests (HTTP/HTTPS และการรวม Session Pooling)
วิธีกำหนดค่าพร็อกซี HTTP(S) ที่มีรหัสผ่านใน Python requests และ requests.Session() วิธีแก้ปัญหา 407 ProxyError และการหมุนเวียนพูล IP นิ่ง
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีใน Playwright (การยืนยันตัวตนระดับเบราว์เซอร์และราย Context)
กำหนดค่า HTTP(S) proxy พร้อมการยืนยันตัวตนใน Playwright สำหรับ Node.js และ Python ใช้งานหลาย IP แบบคงที่แยกจากกันบน BrowserContext
เครื่องมือฟรี
เครื่องมือแปลงรูปแบบพร็อกซีแบบกลุ่ม (ประมวลผลบนเบราว์เซอร์ ปลอดภัย 100%)
เครื่องมือจัดรูปแบบรายการพร็อกซีจำนวนมากบนเบราว์เซอร์ 100% แปลงระหว่าง ip:port:user:pass, user:pass@ip:port, http:// URL, SOCKS5 URI, JSON array และ FoxyProxy ได้ทันที
พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ SEO และติดตามอันดับ SERP: แสดงอันดับคำค้นหาที่แม่นยำใน 7 ประเทศ
ติดตามอันดับคีย์เวิร์ดระดับท้องถิ่น ตรวจสอบการเปลี่ยนเส้นทางตามพิกัดภูมิศาสตร์ และรัน Screaming Frog ด้วยพร็อกซี IPv4 แบบเฉพาะและ ISP แบบคงที่ไม่จำกัดแบนด์วิดท์
พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ Amazon: แยกบัญชี Seller Central, KDP และ Merch ออกจากกันด้วย IP คงที่
ป้องกันการโดนระงับบัญชีที่เชื่อมโยงกัน (Related Accounts) บน Amazon Seller Central, KDP และ Merch ด้วยพร็อกซี ISP คงที่ของสหรัฐฯ และ IPv4 ส่วนตัวของอังกฤษ/ญี่ปุ่น
IPV4 · united states
พร็อกซี IPv4 สหรัฐฯ ส่วนตัว: IP ดาต้าเซ็นเตอร์อเมริกาความเร็วสูงเฉพาะคุณ
พร็อกซี IPv4 ส่วนตัวสหรัฐฯ สำหรับดึงข้อมูล เช็กอันดับ ตรวจสอบโฆษณา และรีเสิร์ช Amazon มี IP คงที่ ใช้คนเดียว แบนด์วิดท์ไม่จำกัด เปิดใช้งานไว
IPV4 · united kingdom
พร็อกซี IPv4 สหราชอาณาจักรส่วนตัว: IP ดาต้าเซ็นเตอร์อังกฤษสำหรับผู้ขาย SEO และโฆษณา
พร็อกซี IPv4 สหราชอาณาจักรส่วนตัวสำหรับ eBay UK, Amazon.co.uk, ตรวจอันดับ google.co.uk และโฆษณาในสหราชอาณาจักร แบนด์วิดท์ไม่จำกัด