Cách giải quyết dấu vân tay TLS/JA3 trong Web Scraping với curl_cffi
Cách giải quyết vấn đề TLS/JA3 Fingerprinting trong Web Scraping với curl_cffi
Anh Tuan
Data Science Expert
28-Aug-2024
Bạn đang gặp khó khăn khi đối mặt với các biện pháp chống bot khi scraping website? curl_cffi, một thư viện Python nâng cao bao quanh công cụ cURL, có thể giúp bạn vượt qua các rào cản này một cách hiệu quả. Bằng cách bắt chước hành vi trình duyệt và tận dụng các tính năng của cURL, curl_cffi tăng cường khả năng của scraper để tránh phát hiện và hoạt động trơn tru. Trong hướng dẫn này, chúng ta sẽ khám phá cách thức hoạt động của curl_cffi, cách sử dụng nó cho nhiều tác vụ khác nhau và giải quyết các hạn chế của nó. Chúng ta cũng sẽ thảo luận về các giải pháp tiềm năng để khắc phục những hạn chế này.
curl_cffi là gì?
curl_cffi là một thư viện Python được thiết kế cho các yêu cầu mạng, tương tự như các thư viện như requests và httpx. Tuy nhiên, không giống như những thư viện này, curl_cffi có thể mô phỏng dấu vân tay TLS/JA3 và HTTP/2 của trình duyệt. curl-impersonate là một công cụ dòng lệnh có thể mô phỏng bốn trình duyệt chính và thực hiện các giao thức TLS và HTTP giống như một trình duyệt thực sự. curl_cffi gói curl-impersonate vào một thư viện Python bằng cách sử dụng cffi.
Bạn đang gặp khó khăn với việc liên tục thất bại trong việc giải quyết hoàn toàn captcha khó chịu?
Khám phá giải pháp captcha tự động liền mạch với công nghệ Auto Web Unblock AI-powered của CapSolver!
Nhận Mã Khuyến Mãi của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn
Dấu vân tay TLS/JA3 là gì?
Ngày nay, hầu hết các trang web sử dụng HTTPS. Để thiết lập kết nối HTTPS, một handshake TLS diễn ra giữa máy chủ và máy khách, trao đổi thông tin như các phiên bản TLS được hỗ trợ và các thuật toán mã hóa. Các máy khách khác nhau có các đặc điểm khác nhau, và những chi tiết này thường ổn định, cho phép máy chủ xác định các yêu cầu đến từ trình duyệt người dùng điển hình hoặc các script tự động. JA3 là một thuật toán phổ biến được sử dụng để tạo dấu vân tay TLS. Nó hoạt động bằng cách nối các đặc điểm này lại với nhau và tính toán một băm MD5.
Sử dụng curl_cffi
Việc sử dụng curl_cffi khá giống với requests. Dưới đây là cách bạn có thể sử dụng requests để lấy dấu vân tay JA3:
pythonCopy
import requests
url = "https://tls.browserleaks.com/json"
r = requests.get(url)
print(r.json())
Nếu bạn thực hiện các yêu cầu lặp lại, bạn sẽ thấy rằng giá trị băm JA3 của bạn vẫn giữ nguyên. Tuy nhiên, bắt đầu từ phiên bản Chrome 110, thứ tự mở rộng TLS ClientHello được sắp xếp ngẫu nhiên, giúp cho các nhà phát triển trang web dễ dàng chặn các thư viện như requests dựa trên dấu vân tay JA3. Nếu các yêu cầu của bạn liên tục hiển thị cùng một dấu vân tay JA3, chúng có thể bị xác định là đến từ một người dùng duy nhất, tăng khả năng bị gắn cờ là bot.
Đây là cách sử dụng curl_cffi để mô phỏng dấu vân tay JA3 thực:
pythonCopy
from curl_cffi import requests
url = "https://tls.browserleaks.com/json"
r = requests.get(url, impersonate="chrome124")
print(r.json())
Tham số impersonate cho phép bạn chỉ định trình duyệt và phiên bản để mô phỏng. Các trình duyệt được hỗ trợ bao gồm Chrome, Chrome Android, Edge và Safari, với các phiên bản được cập nhật liên tục. Để biết thông tin chi tiết, hãy tham khảo kho lưu trữ curl_cffi trên GitHub. Với curl_cffi, dấu vân tay JA3 sẽ phù hợp với dấu vân tay của một trình duyệt thực và bắt đầu từ Chrome 110, dấu vân tay JA3 sẽ thay đổi với mỗi yêu cầu:
jsonCopy
{
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"ja3_hash": "c97c8dac4ca1de968fe230de54f3e0f3",
"ja3_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,16-10-27-18-5-51-23-17513-45-35-43-13-65281-0-11-65037,25497-29-23-24,0",
"ja3n_hash": "4c9ce26028c11d7544da00d3f7e4f45c",
"ja3n_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-5-10-11-13-16-18-23-27-35-43-45-51-17513-65037-65281,25497-29-23-24,0",
"akamai_hash": "52d84b11737d980aef856699f885ca86",
"akamai_text": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p"
}
Khắc phục hạn chế của curl_cffi
Mặc dù curl_cffi có thể mô phỏng dấu vân tay JA3 thực sự và tiềm năng tránh các thử thách và chặn bot, nó có thể không phải lúc nào cũng đủ. Nhiều trang web triển khai các cơ chế bảo vệ bot nâng cao như captcha, reCaptcha, captcha, Cloudflare Turnstile, captcha và captcha WAF. Các hệ thống này sử dụng hình ảnh phức tạp và các thử thách JavaScript khó đọc để phân biệt giữa con người và bot. Đôi khi, ngay cả với dấu vân tay JA3 chính xác và ngẫu nhiên, việc bỏ qua các thử thách này là không thể tránh khỏi.
Nếu bạn gặp phải các thử thách CAPTCHA, bất kể thư viện yêu cầu bạn sử dụng, chúng có thể không thể tránh khỏi. Tuy nhiên, không cần phải lo lắng. CapSolver cung cấp một giải pháp cho những vấn đề này. CapSolver sử dụng công nghệ mở khóa web tự động dựa trên AI để giải quyết nhiều thử thách bot trong vài giây. Cho dù phải đối mặt với hình ảnh hay các vấn đề phức tạp, CapSolver đều có thể xử lý hiệu quả. Nếu giải pháp thất bại, bạn sẽ không phải chịu bất kỳ chi phí nào.
CapSolver cũng cung cấp tiện ích mở rộng trình duyệt tự động giải quyết CAPTCHA trong quá trình thu thập dữ liệu với Selenium. Ngoài ra, một giải pháp API có sẵn để giải quyết CAPTCHA và lấy token trong các framework như Scrapy. Mọi thứ đều có thể được thực hiện chỉ trong vài giây. Để biết thêm chi tiết, hãy tham khảo Tài liệu CapSolver.
Kết luận
Bằng cách tích hợp curl_cffi vào thiết lập thu thập dữ liệu web của bạn, bạn có thể hiệu quả bắt chước hành vi trình duyệt thực sự để vượt qua các thử thách xác thực TLS/JA3. Mặc dù curl_cffi cung cấp các công cụ mạnh mẽ để xử lý các thử thách này, nhưng các hệ thống phát hiện bot và CAPTCHA nâng cao vẫn tạo ra những trở ngại đáng kể. CapSolver cung cấp một giải pháp bổ sung để giải quyết các thử thách CAPTCHA này một cách liền mạch, đảm bảo các hoạt động thu thập dữ liệu của bạn diễn ra suôn sẻ.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.