Bumili ka ng malinis na residential IPs, perpekto mong pinapaikot ang mga ito, pero 403 pa rin ang nakukuha mo sa unang request. Hindi ang IP ang problema — ang TLS handshake mo. Ang TLS fingerprinting ay nagbibigay-daan sa isang server na tukuyin ang client library bago pa man mabasa ang kahit isang byte ng iyong HTTP request. Ipinapaliwanag ng gabay na ito ang JA3/JA4, ipinapakita kung bakit napakadaling tuktukin ang requests ng Python, at nagbibigay ng gumaganang code para gayahin ang totoong browser gamit ang curl_cffi at tls-client.
Kapag may client na nagbukas ng HTTPS connection, nagpapadala ito ng ClientHello na naglalahad ng TLS version nito, mga cipher suite, mga extension, mga elliptic curve, at ang pagkakasunod-sunod ng lahat ng ito. Ang pagkakasunod-sunod na iyon ay kapansin-pansing tiyak sa library na bumuo nito. I-hash mo ito at makakakuha ka ng JA3 fingerprint (o ang mas bago at mas matatag na JA4).
Ang Chrome ay gumagawa ng isang fingerprint. Ang Firefox ng iba. Ang requests ng Python (na binuo sa urllib3 at OpenSSL) ay gumagawa ng fingerprint na sumisigaw ng "automation" — at ito ay magkapareho sa milyun-milyong bot. Ang mga anti-bot system ay may itinatagong blocklist ng mga ito. Gaano man ka-residential ang IP mo, ang isang kilalang-bot na JA3 ay maflflag.
Bago ayusin ang anuman, sukatin ito. Magpadala ng request mula sa iyong scraper papunta sa libreng JA3/JA4 fingerprint checker ng JIBAO at ihambing ito sa ipinapakita ng totoong Chrome. Kung magkaiba ang JA3 hashes, kaya kang ihiwalay ng target mula sa isang tao — at kaya rin ng Cloudflare.
Ang requests at httpx ay ibinibigay ang TLS sa OpenSSL ng system. Maaari mong palitan ang mga header at kahit ang User-Agent buong araw, pero ang handshake sa ilalim nito ay sa OpenSSL pa rin, hindi sa Chrome. Ang header spoofing nang walang handshake spoofing ang pinakakaraniwang dahilan kung bakit nangyayari ang "kinopya ko ang mga header ng browser pero binblock pa rin ako." Kailangan mo ng client na ginagaya ang aktwal na TLS stack ng browser.
Ang curl_cffi ay nakakabit sa curl-impersonate, isang build ng curl na muling ginagawa ang totoong browser TLS at HTTP/2 fingerprints. Isang argument lang at magmumukhang Chrome na ang handshake mo:
# pip install curl_cffi
from curl_cffi import requests
# impersonate a real Chrome TLS + HTTP/2 fingerprint
r = requests.get(
"https://tls.browserleaks.com/json",
impersonate="chrome131",
)
print(r.json()["ja3_hash"]) # now matches real Chrome
Ang API ay kahawig ng requests, kaya ang paglilipat ng kasalukuyang scraper ay kadalasang isang-linya lang na pagbabago sa import. Kabilang sa mga sinusuportahang target ang mga kamakailang build ng Chrome, Edge, Safari, at Firefox — pumili ng isa at panatilihing napapanahon, dahil umiikot ang mga fingerprint habang nag-a-update ang mga browser.
Ang fingerprint matching at IP rotation ay magkakaakibat, hindi magkapalit. Gamitin ang dalawa: isang browser-grade na handshake sa ibabaw ng malinis na residential IP ang talagang nakakadaan:
from curl_cffi import requests
PROXY = "socks5h://USERNAME:[email protected]:10001"
r = requests.get(
"https://example.com/protected",
impersonate="chrome131",
proxies={"http": PROXY, "https": PROXY},
timeout=30,
)
print(r.status_code)
Ang tls-client (isang Python wrapper sa ibabaw ng Go uTLS implementation) ay isa pang matibay na opsyon, na may malaking library ng mga pinangalanang profile:
# pip install tls-client
import tls_client
session = tls_client.Session(
client_identifier="chrome_120",
random_tls_extension_order=True,
)
session.proxies = {
"http": "socks5h://USERNAME:[email protected]:10001",
"https": "socks5h://USERNAME:[email protected]:10001",
}
r = session.get("https://example.com/protected")
print(r.status_code)
Ang random_tls_extension_order=True ay sinasaliwa ang pagkakasunod-sunod ng extension upang maiwasan ang isang static at maaaring magamit-muli na fingerprint — nakakatulong laban sa mga system na nagsusubaybay ng eksaktong-tugma na JA3 sa paglipas ng panahon.
May ilang target na nagsusuri ng mga senyales ng JavaScript-execution (canvas, WebGL, event timing) na walang HTTP client ang makakagaya. Doon, magpatakbo na lang ng totoong browser — tingnan ang paggamit ng proxy sa Playwright at Puppeteer nang may stealth. Ang trade-off ay gastos at bilis: ang mga HTTP client tulad ng curl_cffi ay mas mura kada request, kaya gamitin ang mga ito saanman sapat na ang mga ito at itira ang buong browser para sa pinakamahihirap na target.
curl_cffi (impersonate=) o tls-client — hindi sapat ang mga header lang.Ang TLS fingerprinting ang nawawalang layer sa karamihan ng mga kwentong "malinis ang IP pero naka-block pa rin." Ayusin ang handshake, panatilihin ang residential IP, at tatalon ang success rate. Para sa buong stack laban sa pinakamatigas na WAF, basahin ang 2026 Cloudflare bypass recipe.
Kumuha ng 500MB ng libreng traffic at residential IPs para ipares sa browser-grade na TLS fingerprints.
Simulan ang Libreng TrialAng mga bagong user ay makakatanggap ng 500MB sa pagrehistro, kasama ang bonus sa unang recharge. Limitadong oras lang ang alok.