CAPSOLVER
Blog
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

Logo of CapSolver

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ư requestshttpx. 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:

python Copy
import requests

url = "https://tls.browserleaks.com/json"
r = requests.get(url)
print(r.json())

Bạn có thể nhận được kết quả như thế này:

json Copy
{
    "user_agent": "python-requests/2.32.3",
    "ja3_hash": "8d9f7747675e24454cd9b7ed35c58707",
    "ja3_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-11-10-16-22-23-49-13-43-45-51-21,29-23-30-25-24,0-1-2",
    "ja3n_hash": "a790a1e311289ac1543f411f6ffceddf",
    "ja3n_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-10-11-13-16-21-22-23-43-45-49-51,29-23-30-25-24,0-1-2",
    "akamai_hash": "",
    "akamai_text": ""
}

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:

python Copy
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:

json Copy
{
    "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ẻ.

Để biết thêm thông tin chi tiết và tài nguyên, hãy xem trang web CapSolver và khám phá kho lưu trữ GitHub curl_cffi.

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ư.

Thêm

Cách giải Captchas khi web scraping với Scrapling và CapSolver
Cách giải Captchas khi quét web bằng Scrapling và CapSolver

Scrapling + CapSolver cho phép quét trang web tự động với việc vượt qua ReCaptcha v2/v3 và Cloudflare Turnstile.

web scraping
Logo of CapSolver

Anh Tuan

05-Dec-2025

Thay đổi User-Agent trong Selenium
Thay đổi User-Agent trong Selenium | Các bước và Nguyên tắc tốt

Thay đổi User Agent trong Selenium là bước quan trọng trong nhiều nhiệm vụ quét web. Giúp che giấu script tự động hóa thành một trình duyệt thông thường...

The other captcha
Logo of CapSolver

Lucas Mitchell

05-Dec-2025

Làm thế nào để xác định nếu `action` được yêu cầu để giải quyết Cloudflare Turnstile bằng cách sử dụng tiện ích mở rộng CapSolver
Làm thế nào để xác định xem `action` có cần thiết hay không để giải Cloudflare Turnstile bằng cách sử dụng tiện ích mở rộng CapSolver

Học cách nhận diện hành động để giải CAPTCHA hiệu quả cho Cloudflare Turnstile. Theo dõi hướng dẫn từng bước của chúng tôi về cách sử dụng các công cụ và kỹ thuật của Capsolver.

Cloudflare
Logo of CapSolver

Aloísio Vítor

05-Dec-2025

9trung gian
Khám phá sức mạnh của 9Proxy: Bài đánh giá toàn diện

Trong bài viết này, chúng tôi sẽ giới thiệu 9proxy và các dịch vụ mà họ cung cấp.

Partners
Logo of CapSolver

Nikolai Smirnov

04-Dec-2025

Thu thập dữ liệu từ web với Selenium và Python
Gỡ mã nguồn trang web với Selenium và Python | Giải Captcha khi gỡ mã nguồn trang web

Trong bài viết này, bạn sẽ làm quen với trích xuất dữ liệu từ web bằng Selenium và Python, và học cách giải mã Captcha liên quan đến quy trình để trích xuất dữ liệu hiệu quả.

web scraping
Logo of CapSolver

Aloísio Vítor

04-Dec-2025

Bảng điều khiển CapSolver 3.0!
Nâng cấp với Bảng điều khiển CapSolver 3.0!

CapSolver Dashboard 3.0 đã được nâng cấp mới với tăng cường tương tác và hàng loạt tính năng mới.

The other captcha
Logo of CapSolver

Emma Foster

04-Dec-2025