ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องเอกสาร จ่ายด้วยคริปโต: BTC, USDT, USDC, ETH, SOL, LTC
ภาษา: ไทย
เริ่มต้นเลย

เอกสาร · เซสชัน · การหมุน · การรักษาการเชื่อมต่อ

Sticky sessions และการหมุน IP: รหัสเซสชัน, TTL และการใช้งานการเชื่อมต่อซ้ำ

การหมุนเกิดขึ้นตามการเชื่อมต่อแต่ละครั้ง ส่วน sticky sessions จะตามรหัสเซสชัน เมื่อคุณเข้าใจว่าไลบรารีของคุณใช้งานการเชื่อมต่อซ้ำอย่างไร คุณจะตัดสินใจได้อย่างชัดเจนว่าเมื่อใด IP จะเปลี่ยนแปลง

อัปเดตล่าสุด: · 3 เวลาที่ใช้ในการอ่าน (นาที)

คำตอบด่วน

การทำงานของ sticky sessions และการหมุน IP บนพร็อกซีเรซิเดนเชียลเป็นอย่างไร?

บน CrawlRelay ชื่อผู้ใช้ที่ไม่มีรหัสเซสชันจะได้รับ IP จากพูลทุกการเชื่อมต่อ TCP ใหม่ โดยปกติจะเป็น IP ที่ต่างกัน และ -session-<id>-ttl-<minutes> จะรักษา IP หนึ่งสำหรับรหัสนั้นเป็นเวลา นานสูงสุด 30 นาที แม้ว่า IP อาจเปลี่ยนแปลงก่อนหน้านั้น การหมุนจะตามการเชื่อมต่อ ไม่ใช่คำขอ HTTP ดังนั้น keep-alive จะเป็นตัวกำหนดว่า IP ของคุณจะเปลี่ยนจริง ๆ เมื่อไหร่ ทราฟฟิกพร็อกซีเรซิเดนเชียลมีค่าใช้จ่ายเริ่มต้น US$0.50/GB จาก 50 GB ชำระเงินด้วยคริปโต, ไม่ต้อง KYC

กฎของเซสชันสรุปแบบคร่าว ๆ

หน่วยของการหมุนIP จากพูลในทุกการเชื่อมต่อ TCP ใหม่ โดยปกติจะเป็น IP ที่ต่างกัน
Sticky session-session-<id>-ttl-<minutes> ต่อท้ายชื่อผู้ใช้
ความยาวของเซสชันนานสูงสุด 30 นาที
รหัสเซสชัน1–32 ตัวอักษรหรือตัวเลข; รหัสหนึ่งต่อการไหลของข้อมูล
เงื่อนไขที่ทำให้เซสชันจบก่อนเวลาอุปกรณ์พร็อกซีเรซิเดนเชียลเบื้องหลังนั้นออฟไลน์
Shared IDsลูกค้าที่ส่ง ID เดียวกันจะใช้พร็อกซีเรซิเดนเชียล exit เดียวกัน
ค่าใช้จ่ายไม่มี: session และการเปลี่ยนพร็อกซีรวมในราคาต่อ GB แล้ว

เมื่อส่ง session ID ที่เกตเวย์จะเกิดอะไรขึ้น?

เกตเวย์จะอ่านชื่อผู้ใช้ในแต่ละการเชื่อมต่อใหม่ หากไม่มีส่วน session จะเลือกพร็อกซีเรซิเดนเชียลที่ตรงกับเป้าหมายของคุณสำหรับการเชื่อมต่อนั้นเท่านั้น หากมีส่วน session จะคงพร็อกซี exit เดิมสำหรับ ID นั้นตาม TTL ที่คุณตั้งไว้

พร็อกซี IP ติดหนึบคือการเชื่อมต่อจริงที่บ้าน จึงอาจตัดก่อนหมด TTL ได้ เช่น อุปกรณ์ปิด Wi-Fi หลุดหรือเปลี่ยนเครือข่าย งานที่ต่อเนื่องนานต้องจัดการโดยตรวจสอบ IP exit ที่จุดเช็กพอยต์และเริ่มใหม่จากจุดเช็กพอยต์แทนที่จะล้มทั้งงาน

ไลบรารีแต่ละตัวใช้การเชื่อมต่อซ้ำกันอย่างไร?

ถ้าไลบรารีเก็บการเชื่อมต่อนั้นไว้ ทุกคำขอในเชื่อมต่อนั้นจะใช้พร็อกซี exit เดียวกัน นี่คือวิธีที่ทำให้ได้พฤติกรรมที่ต้องการอย่างตั้งใจ

ไลบรารีค่าเริ่มต้นIP ใหม่ทุกคำขอIP หนึ่งตัวสำหรับแต่ละ flow
Python requestsSession เก็บการเชื่อมต่อต่อเนื่องHeader Connection: close หรือ Session ใหม่ในแต่ละคำขอSession ตัวเดียวกับ session ID ในชื่อผู้ใช้
httpxไคลเอนต์รวมการเชื่อมต่อhttpx.Limits(max_keepalive_connections=0)ไคลเอนต์หนึ่งตัวต่อ session ID
aiohttpTCPConnector รวมการเชื่อมต่อTCPConnector(force_close=True)session ID ใน proxy URL username
Scrapyรวมตามข้อมูลรับรองพร็อกซีและโฮสต์meta={"proxy_session": "new"} กับ middleware ของเราproxy_session ตายตัวสำหรับ flow
Playwright / PuppeteerChrome รวมต่อ contextcontext ใหม่ต่อหน้าcontext หนึ่งตัวต่อ session ID
Node.js undici, axios, gotAgents เก็บ sockets ตลอดAgent ใหม่ต่อคำขอ หรือปิด keep-aliveAgent หนึ่งตัวต่อ session ID
curlหนึ่งการเชื่อมต่อต่อคำสั่งเป็นอย่างนี้อยู่แล้วsession ID เดียวกันในแต่ละคำสั่ง

กลยุทธ์ session แบบไหนเหมาะกับงาน scraping อะไร?

งานกลยุทธ์TTL แนะนำ
หน้าผลิตภัณฑ์ บทความ หรือรายการแยกหมุน: ไม่มี session ID—
การแบ่งหน้าโดยที่หน้าถัดไปขึ้นกับคุกกี้หรือเคอร์เซอร์พร็อกซีเรซิเดนเชียลแบบติดหนึบหนึ่งครั้งต่อรายการ10–30 นาที
ค้นหา, แล้วผลลัพธ์, แล้วหน้ารายละเอียดพร็อกซีเรซิเดนเชียลแบบติดหนึบหนึ่งครั้งต่อการค้นหา10–20 นาที
การเรนเดอร์เว็บด้วยเฮดเลสบราวเซอร์หลายหน้าในไซต์เดียวกันพร็อกซีเรซิเดนเชียลแบบติดหนึบหนึ่งครั้งต่อคอนเท็กซ์ของบราวเซอร์อายุของคอนเท็กซ์, สูงสุด 30 นาที
ตรวจสอบสิ่งที่หน้าแสดงในหลายเมืองพร็อกซีเรซิเดนเชียลระยะสั้นหนึ่งครั้งต่อการตรวจสอบเมือง5 นาที
ตรวจสอบหน้าเดิมซ้ำทุกชั่วโมงหมุน—

ฉันจะจัดการพูลพร็อกซีเรซิเดนเชียลแบบติดหนึบใน Python อย่างไร?

พูลขนาดเล็กจะกระจายโหลดไปยังพร็อกซีเรซิเดนเชียลที่เสถียรไม่กี่อัน และเกษียณแต่ละอันหลังจากจำนวนคำขอที่กำหนดหรือหลังมีสัญญาณว่าการเชื่อมต่อล้มเหลว เช่น 502 หรือ 503 โปรดทราบว่ามันไม่ได้ทำสิ่งนี้: ไม่ได้สลับ IP เพื่อผ่าน 403 หรือ 429 เหล่านี้แปลว่าเว็บไซต์ต้องการให้คุณช้าลง ดังนั้นพูลจะส่งข้อความนั้นกลับไปยังโค้ดของคุณ

Python: พูลพร็อกซีเรซิเดนเชียลแบบติดหนึบ
import random
import uuid

import requests

GATEWAY = "gw.crawlrelay.com:7777"
BASE_USER, PASSWORD = "USERNAME-country-us", "PASSWORD"


class SlowDown(Exception):
    """The target asked us to slow down (403 or 429): back off, do not rotate."""


class StickySession:
    def __init__(self, ttl=15, max_requests=50):
        self.id = uuid.uuid4().hex[:10]
        self.max_requests, self.used = max_requests, 0
        user = "%s-session-%s-ttl-%d" % (BASE_USER, self.id, ttl)
        proxy = "http://%s:%s@%s" % (user, PASSWORD, GATEWAY)
        self.http = requests.Session()
        self.http.proxies = {"http": proxy, "https": proxy}


class SessionPool:
    EXIT_PROBLEMS = {502, 503, 504}

    def __init__(self, size=5, **options):
        self.options = options
        self.sessions = [StickySession(**options) for _ in range(size)]

    def _replace(self, i):
        self.sessions[i].http.close()
        self.sessions[i] = StickySession(**self.options)

    def get(self, url, **kwargs):
        i = random.randrange(len(self.sessions))
        s = self.sessions[i]
        s.used += 1
        try:
            r = s.http.get(url, timeout=(10, 30), **kwargs)
        except requests.exceptions.RequestException:
            self._replace(i)  # dropped exit or timeout: start a fresh session
            raise
        if r.status_code in (403, 429):
            raise SlowDown("%s returned %d" % (url, r.status_code))
        if r.status_code in self.EXIT_PROBLEMS or s.used >= s.max_requests:
            self._replace(i)
        return r


pool = SessionPool(size=5, ttl=15, max_requests=50)
print(pool.get("https://api.ipify.org").text)

ฉันจะรู้ได้อย่างไรว่าพร็อกซีที่ติดหนึบเปลี่ยนหรือไม่?

ถาม การขอบริการสะท้อน IP เช่น https://api.ipify.org ผ่านเซสชันเดียวกันในจุดเริ่มต้นของกระบวนการและทุกจุดตรวจสอบแล้วเปรียบเทียบคำตอบ การเปลี่ยนแปลว่าพร็อกซีที่อยู่ข้างหลังเซสชันเปลี่ยนไป: เริ่มต้นใหม่จากจุดตรวจสอบล่าสุด หรือเปิดเซสชันใหม่ บันทึกไว้พร้อม session ID เพื่อแยกความแตกต่างระหว่างการเปลี่ยน IP กับพฤติกรรมเว็บไซต์ตอนดีบัก

ข้อผิดพลาดของเซสชันแบบไหนที่มีค่าใช้จ่ายมากที่สุด?

  • หมุนทุกคำขอของกระบวนการหลายขั้นตอน. เว็บไซต์จะเห็นตะกร้า, เคอร์เซอร์ หรือโทเคนการค้นหากระโดดไปมาระหว่างประเทศและรีเซ็ตมัน
  • เซสชัน ID หนึ่งอันสำหรับทุกคนทำงาน. เซสชันถูกออกแบบให้สำหรับกระบวนการหนึ่งชุด จึงต้องให้แต่ละคนและแต่ละกระบวนการมี ID เอง
  • เซสชันยาวเกินกว่างาน. TTL 30 นาทีสำหรับกระบวนการ 2 นาทีทำให้ IP ถูกใช้โดยเปล่าประโยชน์และทำให้บันทึกลำบากขึ้น
  • มอง 429 เป็นปัญหา IP. IP ใหม่ไม่ได้เปลี่ยนกฎของเว็บไซต์; ต้องชะลอแทน ดู 429 Too Many Requests.
  • สมมติว่าหมุนเปลี่ยนทุกคำขอ. keep-alive ช่วยรักษาการเชื่อมต่อไว้; ดูตารางข้างบนสำหรับไลบรารีของคุณ

เซสชันและการหมุน: คำถาม

เซสชันติดหนึบจะอยู่นานแค่ไหน?

เซสชันติดตามเก็บ IP เดิมตามเวลาที่ตั้งไว้ (ttl เป็นนาที) สูงสุด 30 นาที IP อาจเปลี่ยนก่อนเวลากำหนด เช่น เมื่ออุปกรณ์พร็อกซีเรซิเดนเชียลออฟไลน์. เลือก TTL ให้ยาวกว่ากระบวนการที่ให้บริการเล็กน้อยและตรวจสอบพร็อกซีที่จุดตรวจสอบ

เซสชันติดหนึบจะมีค่าใช้จ่ายมากกว่าการหมุนไหม?

ไม่ใช่. CrawlRelay คิดเงินตามปริมาณข้อมูลต่อ GB รวมถึงเซสชัน, การหมุน และการกำหนดเป้าหมาย พร็อกซีเรซิเดนเชียลแบบติดหนึบยังช่วยประหยัดปริมาณข้อมูล เพราะการเชื่อมต่อแบบเก็บไว้ช่วยหลีกเลี่ยงการจับมือ TLS ใหม่ทุกคำขอ

หมุนทุกคำขอดีกว่าสำหรับการสแครปข้อมูลไหม?

สำหรับหน้าเว็บแยกกัน การหมุนช่วยกระจายโหลดและหลีกเลี่ยงการเข้าใช้ไซต์จาก IP เดียวเป็นเวลานาน สำหรับอะไรที่มีสถานะ เช่น การแบ่งหน้าที่ผูกกับคุกกี้ มันจะทำให้กระบวนการล่ม ส่วนใหญ่จะผสมทั้งสองอย่าง: หมุนระหว่างหมวดหมู่ อยู่ติดหนึบภายในกระบวนการ

ฉันจะเลือก IP ที่แน่นอนได้ไหม?

ไม่ได้ พร็อกซีเรซิเดนเชียลจะกำหนดพร็อกซีจากพูลที่เปลี่ยนตลอดเวลา ตามเป้าหมายในชื่อผู้ใช้ คุณเลือกประเทศ, เมือง, รัฐในสหรัฐ, รหัสไปรษณีย์ หรือ ASN และสามารถเก็บ IP ไว้กับเซสชันได้ แต่ไม่สามารถจองที่อยู่เฉพาะได้

การหมุนและเซสชันมีในทุกแผน

US$1.50 สำหรับ 1 GB, US$0.50/GB ตั้งแต่ 50 GB

จาก US$0.50/GB · ไม่ต้อง KYC

เริ่มต้นเลย