curl_cffi ও tls-client দিয়ে TLS ফিঙ্গারপ্রিন্ট এড়ান (২০২৬)

2 জুন 2026 প্রকাশিত · ≈9 মিনিট পড়া

আপনি পরিষ্কার রেসিডেনশিয়াল IP কিনেছেন, সেগুলো নিখুঁতভাবে রোটেট করছেন, তবুও প্রথম রিকোয়েস্টেই 403 পাচ্ছেন। সমস্যা IP-তে নয় — সমস্যা আপনার TLS হ্যান্ডশেকে। TLS fingerprinting সার্ভারকে আপনার HTTP রিকোয়েস্টের একটি বাইটও পড়ার আগেই ক্লায়েন্ট লাইব্রেরি শনাক্ত করতে দেয়। এই গাইডে JA3/JA4 ব্যাখ্যা করা হয়েছে, দেখানো হয়েছে কেন Python-এর requests খুব সহজেই শনাক্ত হয়, এবং curl_cffitls-client দিয়ে সত্যিকারের ব্রাউজার অনুকরণ করার কার্যকর কোড দেওয়া হয়েছে।

TLS Fingerprinting কী (JA3 / JA4)?

যখন কোনো ক্লায়েন্ট একটি HTTPS সংযোগ খোলে, তখন সেটি একটি ClientHello পাঠায় যা তার TLS সংস্করণ, সাইফার স্যুট, এক্সটেনশন, ইলিপটিক কার্ভ, এবং এগুলোর ক্রম প্রকাশ করে। সেই ক্রমটি যে লাইব্রেরি এটি তৈরি করেছে তার জন্য অসাধারণভাবে নির্দিষ্ট। এটি হ্যাশ করুন এবং আপনি একটি JA3 ফিঙ্গারপ্রিন্ট পাবেন (অথবা নতুন, আরও শক্তিশালী JA4)।

Chrome একটি ফিঙ্গারপ্রিন্ট তৈরি করে। Firefox আরেকটি। Python-এর requests (urllib3 এবং OpenSSL-এর উপর নির্মিত) এমন একটি ফিঙ্গারপ্রিন্ট তৈরি করে যা চিৎকার করে "automation" বলে — এবং তা লক্ষ লক্ষ বটের মধ্যে অভিন্ন। অ্যান্টি-বট সিস্টেমগুলো এগুলোর একটি ব্লকলিস্ট রাখে। আপনার IP যতই রেসিডেনশিয়াল হোক না কেন, একটি পরিচিত-বট JA3 ফ্ল্যাগ হয়ে যায়।

প্রথমে নিজের ফিঙ্গারপ্রিন্ট দেখুন

কিছু ঠিক করার আগে, সেটি পরিমাপ করুন। আপনার স্ক্র্যাপার থেকে JIBAO-এর বিনামূল্যের JA3/JA4 ফিঙ্গারপ্রিন্ট চেকার-এ একটি রিকোয়েস্ট পাঠান এবং এটিকে একটি সত্যিকারের Chrome যা দেখায় তার সাথে তুলনা করুন। যদি JA3 হ্যাশ ভিন্ন হয়, তাহলে টার্গেট আপনাকে একজন মানুষ থেকে আলাদা করতে পারে — এবং Cloudflare-ও পারে।

কেন requests এবং httpx এটি ঠিক করতে পারে না

requests এবং httpx TLS-কে সিস্টেমের OpenSSL-এর হাতে ছেড়ে দেয়। আপনি সারাদিন হেডার এমনকি User-Agent পরিবর্তন করতে পারেন, কিন্তু নিচের হ্যান্ডশেকটি এখনও OpenSSL-এর, Chrome-এর নয়। হ্যান্ডশেক স্পুফিং ছাড়া হেডার স্পুফিং হল "আমি ব্রাউজারের হেডার কপি করেছি তবুও এটি আমাকে ব্লক করে" ঘটার সবচেয়ে সাধারণ কারণ। আপনার এমন একটি ক্লায়েন্ট দরকার যা ব্রাউজারের প্রকৃত TLS স্ট্যাক অনুকরণ করে।

curl_cffi দিয়ে এটি ঠিক করুন

curl_cffi curl-impersonate-এর সাথে বাইন্ড করে, যা curl-এর একটি বিল্ড যা সত্যিকারের ব্রাউজারের TLS এবং HTTP/2 ফিঙ্গারপ্রিন্ট পুনরুৎপাদন করে। একটি আর্গুমেন্ট দিলেই আপনার হ্যান্ডশেক Chrome-এর মতো দেখায়:

# 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

API requests-এর প্রতিফলন ঘটায়, তাই একটি বিদ্যমান স্ক্র্যাপার মাইগ্রেট করা বেশিরভাগ ক্ষেত্রে এক-লাইনের import পরিবর্তন। সমর্থিত টার্গেটগুলোর মধ্যে রয়েছে সাম্প্রতিক Chrome, Edge, Safari, এবং Firefox বিল্ড — একটি বেছে নিন এবং সেটি হালনাগাদ রাখুন, কারণ ব্রাউজার আপডেট হওয়ার সাথে সাথে ফিঙ্গারপ্রিন্টও পরিবর্তিত হয়।

রেসিডেনশিয়াল প্রক্সির সাথে এটি মিলিয়ে নিন

ফিঙ্গারপ্রিন্ট ম্যাচিং এবং IP রোটেশন পরিপূরক, বিকল্প নয়। দুটোই ব্যবহার করুন: একটি পরিষ্কার রেসিডেনশিয়াল IP-এর উপর দিয়ে একটি ব্রাউজার-গ্রেড হ্যান্ডশেক হল যা প্রকৃতপক্ষে পার করায়:

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)

বিকল্প: tls-client

tls-client (একটি Go uTLS বাস্তবায়নের উপর একটি Python র‍্যাপার) আরেকটি শক্তিশালী বিকল্প, যার সাথে নামকরা প্রোফাইলের একটি বড় লাইব্রেরি রয়েছে:

# 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)

random_tls_extension_order=True একটি স্থির, পুনঃব্যবহারযোগ্য ফিঙ্গারপ্রিন্ট এড়াতে এক্সটেনশনের ক্রম এলোমেলো করে — এমন সিস্টেমের বিরুদ্ধে সহায়ক যেগুলো সময়ের সাথে হুবহু-মিল JA3 ট্র্যাক করে।

যখন আপনার এখনও একটি সত্যিকারের ব্রাউজার দরকার

কিছু টার্গেট JavaScript-এক্সিকিউশন সিগন্যাল (canvas, WebGL, ইভেন্ট টাইমিং) যাচাই করে যা কোনো HTTP ক্লায়েন্ট পুনরুৎপাদন করে না। সেখানে এর পরিবর্তে একটি সত্যিকারের ব্রাউজার চালান — দেখুন Playwright ও Puppeteer-এর সাথে প্রক্সি ব্যবহার স্টেলথসহ। ট্রেড-অফ হল খরচ এবং গতি: curl_cffi-এর মতো HTTP ক্লায়েন্ট প্রতি রিকোয়েস্টে অনেক সস্তা, তাই যেখানে এগুলো যথেষ্ট সেখানে এগুলো ব্যবহার করুন এবং সবচেয়ে কঠিন টার্গেটের জন্য পূর্ণ ব্রাউজার সংরক্ষিত রাখুন।

চেকলিস্ট

বেশিরভাগ "পরিষ্কার IP তবুও ব্লকড" গল্পে TLS fingerprinting হল অনুপস্থিত স্তর। হ্যান্ডশেক ঠিক করুন, রেসিডেনশিয়াল IP রাখুন, এবং সাফল্যের হার লাফিয়ে বাড়বে। সবচেয়ে কঠিন WAF-এর বিরুদ্ধে পূর্ণ স্ট্যাকের জন্য, পড়ুন ২০২৬ Cloudflare bypass রেসিপি

পরিষ্কার IP দিয়ে Fingerprinting হারান

ব্রাউজার-গ্রেড TLS ফিঙ্গারপ্রিন্টের সাথে জোড়া দেওয়ার জন্য 500MB ফ্রি ট্রাফিক এবং রেসিডেনশিয়াল IP পান।

বিনামূল্যে ট্রায়াল শুরু করুন

সকল IP পণ্যের জন্য · যেকোনো সময় উপলব্ধ বিশাল নোড পুল

এখনই নিবন্ধন করুন এবং আপনার রিচার্জে ১০০% পর্যন্ত ফেরত পান

নতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।