Tanpa KYC — tanpa ID, tanpa selfie, tanpa dokumen. Bayar dengan crypto: BTC, USDT, USDC, ETH, SOL, LTC
Bahasa: Bahasa Indonesia
Mulai sekarang

Dokumentasi · sesi · rotasi · keep-alive

Sticky sessions dan rotasi IP: ID sesi, TTL, dan penggunaan ulang koneksi

Rotasi terjadi per koneksi, sticky session berdasarkan ID sesi. Setelah tahu bagaimana pustaka Anda menggunakan ulang koneksi, Anda bisa menentukan kapan IP benar-benar berubah.

Terakhir diperbarui: · 5 baca dalam menit

Jawaban cepat

Bagaimana sticky sessions dan rotasi IP bekerja pada proxy residensial?

Di CrawlRelay, username tanpa ID sesi mendapatkan IP dari pool pada setiap koneksi TCP baru, biasanya berbeda, dan -session-<id>-ttl-<minutes> mempertahankan satu IP untuk ID itu selama hingga 30 menit, meskipun IP bisa berubah lebih awal. Rotasi mengikuti koneksi, bukan permintaan HTTP, jadi keep-alive menentukan kapan IP Anda sebenarnya berubah. Trafik residensial dikenai biaya US$0,50/GB mulai dari 50 GB. Dibayar dengan crypto, tanpa KYC.

Aturan sesi secara singkat

Unit rotasiSatu IP dari pool per koneksi TCP baru, biasanya berbeda
Sticky session-session-<id>-ttl-<minutes> ditambahkan ke username
Panjang sesihingga 30 menit
ID sesi1–32 huruf atau angka; satu ID per alur
Apa yang mengakhiri sesi lebih awalPerangkat residensial di belakangnya offline
ID BersamaKlien yang mengirim ID yang sama berbagi exit yang sama
BiayaGratis: sesi dan rotasi sudah termasuk dalam harga per-GB

Apa yang terjadi di gateway saat saya mengirimkan ID sesi?

Gateway membaca username pada setiap koneksi baru. Tanpa bagian sesi, gateway memilih exit proxy residensial yang sesuai dengan target Anda hanya untuk koneksi itu saja. Dengan bagian sesi, gateway mempertahankan exit yang sama untuk ID itu hingga TTL yang Anda tentukan.

IP lengket adalah koneksi rumah nyata, jadi bisa hilang sebelum TTL berakhir: perangkat dimatikan, kehilangan Wi-Fi, atau berganti jaringan. Alur panjang harus bisa bertahan dari hal ini dengan memeriksa IP exit pada titik pemeriksaan dan memulai ulang dari titik pemeriksaan tersebut, bukan gagal seluruh pekerjaan.

Bagaimana setiap library menggunakan ulang koneksi?

Jika sebuah library menjaga koneksi tetap hidup, setiap permintaan pada koneksi itu menggunakan satu exit yang sama. Ini cara mendapatkan tiap perilaku dengan sengaja.

LibraryDefaultIP baru per permintaanSatu IP untuk satu alur
Python requestsSession menjaga koneksi tetap hidupHeader Connection: close, atau Session baru per permintaanSatu Session dengan ID sesi di username
httpxKlien mengelola kumpulan koneksihttpx.Limits(max_keepalive_connections=0)Satu klien per ID sesi
aiohttpTCPConnector mengelola kumpulan koneksiTCPConnector(force_close=True)ID sesi di username URL proxy
ScrapyKumpulan berdasarkan kredensial proxy dan hostmeta={"proxy_session": "new"} dengan middleware kamiproxy_session tetap untuk alur
Playwright / PuppeteerChrome mengelola kumpulan per konteksKonteks baru per halamanSatu konteks per ID sesi
Node.js undici, axios, gotAgent menjaga socket tetap hidupAgent baru per permintaan, atau keep-alive matiSatu agent per ID sesi
curlSatu koneksi per perintahSudah seperti ituID sesi yang sama di setiap perintah

Strategi sesi mana cocok dengan pekerjaan scraping mana?

PekerjaanStrategiTTL yang disarankan
Halaman produk, artikel, atau listing mandiriPutar: tanpa ID sesi—
Paginasi dengan halaman berikutnya bergantung pada cookie atau cursorSatu sesi lengket per listing10–30 menit
Cari, lalu hasil, lalu halaman detailSatu sesi lengket per pencarian10–20 menit
Peramban headless yang merender beberapa halaman dari satu situsSatu sesi lengket per konteks perambanMasa hidup konteks, hingga 30 menit
Memeriksa apa yang ditampilkan halaman di beberapa kotaSatu sesi pendek per pemeriksaan kota5 menit
Memeriksa ulang halaman yang sama setiap jamPutar—

Bagaimana cara mengelola pool sesi lengket dalam Python?

Pool kecil mendistribusikan beban ke beberapa exit yang stabil dan pensiun setiap satu setelah sejumlah permintaan tertentu atau setelah tanda exitnya gagal, seperti 502 atau 503. Catat apa yang tidak dilakukannya: tidak menukar IP untuk melewati 403 atau 429. Itu berarti situs ingin Anda lambat, jadi pool meneruskannya ke kode Anda.

Python: pool sesi lengket
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)

Bagaimana saya tahu IP lengket telah berubah?

Tanya. Minta layanan echo IP seperti https://api.ipify.org melalui sesi yang sama di awal alur dan di setiap checkpoint, lalu bandingkan jawabannya. Perubahan berarti exit di balik sesi berubah: mulai ulang alur dari checkpoint terakhir, atau buka sesi baru. Catat dengan ID sesi agar Anda bisa membedakan perubahan IP dari perilaku situs saat debugging.

Kesalahan sesi mana yang paling merugikan?

  • Memutar pada setiap permintaan dalam alur multi-langkah. Situs melihat keranjang, cursor atau token pencarian berpindah antar negara dan mengatur ulang.
  • Satu ID sesi untuk setiap pekerja. Sesi dimaksudkan untuk satu alur; berikan setiap pekerja dan alurnya ID sendiri.
  • Sesi jauh lebih lama dari pekerjaan. TTL 30 menit untuk alur 2 menit membuat IP sibuk tanpa alasan dan membuat log sulit dibaca.
  • Menganggap 429 sebagai masalah IP. IP baru tidak mengubah aturan situs; memperlambatlah yang mengubahnya. Lihat 429 Too Many Requests.
  • Mengira rotasi per permintaan. Keep-alive mempertahankan exit; periksa tabel di atas untuk perpustakaan Anda.

Sesi dan rotasi: pertanyaan

Berapa lama sesi lengket bertahan?

Sticky sessions menjaga IP yang sama selama waktu yang Anda atur (ttl, dalam menit), hingga 30 menit. IP bisa berubah lebih awal, misal jika perangkat residensial offline. Pilih TTL sedikit lebih lama dari alur yang dilayani, dan periksa exit di checkpoint.

Apakah sesi lengket lebih mahal daripada rotasi?

Tidak. CrawlRelay membebankan lalu lintas per GB, dan sesi, rotasi serta penargetan termasuk dalam harga itu. Sesi lengket malah dapat menghemat lalu lintas karena satu koneksi keep-alive menghindari handshake TLS baru untuk setiap permintaan.

Apakah rotasi di setiap permintaan lebih baik untuk scraping?

Untuk halaman independen, rotasi mendistribusikan beban dan menghindari mengakses situs dari satu IP selama berjam-jam. Untuk apa pun yang memiliki status, seperti paginasi yang terkait dengan cookie, itu memecah alur. Sebagian besar crawl menggabungkan keduanya: putar antar item, tetap lengket dalam alur.

Bisakah saya memilih IP persis yang saya dapatkan?

Tidak. Gateway proxy residensial menetapkan exit dari pool yang selalu berubah, menyesuaikan dengan penargetan pada username Anda. Anda memilih negara, kota, negara bagian AS, kode pos atau ASN, dan bisa mempertahankan IP dengan sesi; Anda tidak dapat memesan alamat spesifik.

Rotasi dan sesi ada di setiap paket

US$1,50 untuk 1 GB, US$0,50/GB dari 50 GB.

Dari US$0,50/GB · tanpa KYC

Mulai sekarang