Cách Giải Quyết Cloudflare Với Go (chromedp + Scrapeless)
Lead Scraping Automation Engineer
TL;DR:
- Cloudflare đánh giá trình duyệt, không phải người truy cập. Nó đọc tính nhất quán của dấu vân tay, tín hiệu hành vi và IP thoát, sau đó đặt cookie
cf_clearancecho trình duyệt mà nó tin tưởng — vì vậy, việc xóa nó trong Go có nghĩa là trở thành một trình duyệt đáng tin cậy, không phải trả lời một câu đố. - Một stack trình duyệt Go cục bộ không đạt điểm số đó trên ba trục: chỉ báo
navigator.webdriver, một dấu vân tay mặc định không hiển thị và một IP thoát từ trung tâm dữ liệu. Giữ các biện pháp tránh né bằng tay là một công việc nhàm chán. - Trình duyệt Scrapeless Scraping vượt qua thử thách trong quá trình render — Chromium tự phát triển thực sự, một dấu vân tay nhất quán cho mỗi phiên, và thoát nhà ở tại hơn 195 quốc gia, được kết nối qua một điểm cuối WebSocket.
- Go của bạn vẫn là chromedp tiêu chuẩn. Chỉ cần chỉ định
chromedp.NewRemoteAllocatortại điểm cuối Scrapeless, đợi nội dung sau thách thức và đọc trang — sự thay đổi duy nhất là URL kết nối. - Đã được xác minh trực tiếp: một phiên chromedp Go qua trình duyệt đám mây đã vượt qua trang thử thách Cloudflare, đọc dấu hiệu thành công
Bạn đã vượt qua thử thách Cloudflare! :D, và nhận được một cookiecf_clearance. - Miễn phí để bắt đầu. Tài khoản Scrapeless mới bao gồm thời gian chạy Trình duyệt Scraping miễn phí — đăng ký tại app.scrapeless.com.
Giới thiệu: vượt qua Cloudflare trong Go là một vấn đề trình duyệt
Một thách thức Cloudflare không phải là một CAPTCHA hình ảnh mà bạn giải mã. Nó chạy ở chế độ nền và đánh giá trình duyệt đã tải trang — liệu dấu vân tay có nhất quán nội bộ, liệu các tín hiệu tương tác có trông giống con người, và liệu IP thoát có uy tín sạch. Khi điểm số vượt qua, Cloudflare đặt cookie cf_clearance và trang thực sự sẽ tải. Khi không vượt qua, bạn sẽ nhận được một trang trung gian thay vì nội dung.
Điều đó định hình lại nhiệm vụ trong Go. Không có câu trả lời để nộp — công việc là trình bày một trình duyệt mà Cloudflare đã tin tưởng. Một Chromium nối đầu không hiển thị được điều đó: nó thông báo tự động hóa thông qua thuộc tính navigator.webdriver, cung cấp phông chữ mặc định không hiển thị và hành vi canvas, và thoát từ một IP mà các dịch vụ uy tín đã biết. Bạn có thể duy trì các biện pháp tránh né của riêng bạn và tiếp tục duy trì chúng khi Chromium và các bộ phát hiện tiến triển. Hướng dẫn này đi theo con đường ngắn hơn: điều khiển Trình duyệt Scrapeless Scraping từ chromedp tiêu chuẩn, vì vậy dấu vân tay, hành vi và IP thoát được xử lý ở phía máy chủ và thử thách được giải quyết trong quá trình render bình thường.
Những gì Cloudflare thực sự kiểm tra
Tài liệu của Cloudflare mô tả một bước xác minh diễn ra mà không làm gián đoạn người truy cập. Trên thực tế, nó đánh giá ba điều và cấp một cookie cf_clearance — một cookie HTTP tiêu chuẩn — khi chúng vượt qua:
| Những gì Cloudflare đọc | Tại sao một trình duyệt Go cục bộ không đạt |
|---|---|
| Tính nhất quán của dấu vân tay | các mặc định đầu hiển thị và cờ webdriver mâu thuẫn với một Chrome thực sự |
| Tín hiệu hành vi | thời gian kịch bản mà không có bề mặt trình duyệt hợp lý |
| Danh tiếng IP thoát | IP từ trung tâm dữ liệu điểm số kém hơn khi so với IP nhà ở |
Một trình duyệt nhất quán, đáng tin cậy quan trọng hơn bất kỳ biện pháp tránh né đơn lẻ nào — đó là lý do tại sao việc chuyển cả ba sang phía máy chủ bền vững hơn so với các bản vá tự tạo.
Tại sao Scrapeless Scraping Browser
Trình duyệt Scrapeless Scraping là một trình duyệt đám mây tùy chỉnh, chống phát hiện được thiết kế cho các bot web và đại lý AI. Đặc biệt cho Cloudflare, nó mang lại:
- Chromium tự phát triển thực sự chạy chính xác script thử thách JavaScript như Chrome, vì vậy nó giải quyết thay vì bị trì hoãn.
- Một dấu vân tay nhất quán cho mỗi phiên — không có chỉ báo
navigator.webdriver, không có mặc định không hiển thị nào lọt ra. - Thoát nhà ở tại hơn 195 quốc gia — Cloudflare đánh giá IP thoát, và một khu vực nhà ở được đọc sạch hơn nơi mà IP trung tâm dữ liệu không làm.
- Duy trì phiên để một cấp phép
cf_clearancecó thể được sử dụng lại qua các yêu cầu trong cùng một phiên. - Một bề mặt kết nối — mọi tùy chọn đều là tham số truy vấn trên cùng một điểm cuối WebSocket.
Nhận khóa API của bạn trên kế hoạch miễn phí tại app.scrapeless.com.
Điều kiện tiên quyết
- Một bộ công cụ Go (Go 1.21 hoặc mới hơn)
github.com/chromedp/chromedpvàgithub.com/chromedp/cdproto- Một tài khoản Scrapeless và khóa API — đăng ký tại app.scrapeless.com
Chi tiết kết nối đầy đủ có thể được tìm thấy trong tài liệu Scraping Browser.
Cài đặt
Kéo chromedp vào mô-đun của bạn. Bạn kết nối đến một trình duyệt từ xa, vì vậy không cần Chrome cục bộ.
bash
go get github.com/chromedp/chromedp
go get github.com/chromedp/cdproto
export SCRAPELESS_API_KEY=your_api_token_here # mã miễn phí tại https://app.scrapeless.com
Kết nối và xóa thách thức
chromedp kết nối với một trình duyệt từ xa bằng NewRemoteAllocator. Truyền điểm cuối Scrapeless với chromedp.NoModifyURL để chromedp sử dụng URL WebSocket như nó là, sau đó chờ nội dung sau thách thức. Thách thức được giải quyết trong quá trình render — không có cuộc gọi giải quyết riêng biệt.
Lưu ý: việc chạy điều này cần một công cụ Go với các mô-đun chromedp đã được cài đặt. Khối này đã được xác minh trực tiếp với trình duyệt đám mây Scrapeless; thêm khóa API của bạn và
go runnó để tái hiện.
go
package main
import (
"context"
"fmt"
"net/url"
"os"
"time"
"github.com/chromedp/cdproto/network"
"github.com/chromedp/chromedp"
)
func main() {
q := url.Values{}
q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
q.Set("sessionTTL", "180")
q.Set("proxyCountry", "US")
endpoint := "wss://browser.scrapeless.com/api/v2/browser?" + q.Encode()
target := "https://www.scrapingcourse.com/cloudflare-challenge"
allocCtx, cancel := chromedp.NewRemoteAllocator(context.Background(), endpoint, chromedp.NoModifyURL)
defer cancel()
ctx, cancel2 := chromedp.NewContext(allocCtx)
defer cancel2()
ctx, cancel3 := context.WithTimeout(ctx, 120*time.Second)
defer cancel3()
var cleared string
var cookies []*network.Cookie
err := chromedp.Run(ctx,
chromedp.Navigate(target),
chromedp.WaitVisible("#challenge-title", chromedp.ByID),
chromedp.Text("#challenge-title", &cleared, chromedp.ByID),
chromedp.ActionFunc(func(ctx context.Context) error {
c, err := network.GetCookies().Do(ctx)
cookies = c
return err
}),
)
if err != nil {
fmt.Println("lỗi:", err)
os.Exit(1)
}
hasClearance := false
for _, c := range cookies {
if c.Name == "cf_clearance" {
hasClearance = true
}
}
fmt.Println("đã xóa:", cleared)
fmt.Println("cf_clearance:", hasClearance)
}
Một lần chạy sống của chương trình này in ra đã xóa: Bạn đã vượt qua thử thách Cloudflare! :D và cf_clearance: true — standard chromedp, lấy từ trình duyệt đám mây.
Nhận khóa API của bạn trên gói miễn phí: app.scrapeless.com
Ghim khu vực để có clearance đáng tin cậy
Cloudflare chấm điểm IP thoát, vì vậy hãy ghim proxyCountry vào một khu vực dân cư. Chuyển nó thành bất kỳ mã quốc gia ISO nào. Thông số W3C WebDriver yêu cầu tự động hóa phù hợp để công bố cờ webdriver; trình duyệt đám mây không mang theo nó, vì vậy một IP sạch có dấu vân tay sạch bên cạnh.
go
q := url.Values{}
q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
q.Set("sessionTTL", "180")
q.Set("proxyCountry", "US") // hoặc "DE", "JP", "BẤT KỲ"
Nơi mà trình duyệt Go cục bộ dừng lại
Một scraper chromedp cục bộ là tốt cho đến khi Cloudflare bắt đầu chấm điểm trình duyệt. Sau đó, dấu vân tay headless, cờ webdriver và IP trung tâm dữ liệu đều không vượt qua các kiểm tra khác nhau, và lớp chèn thay thế nội dung. Đó là vấn đề về dấu vân tay, hành vi và IP — ba điều mà trình duyệt đám mây xử lý phía máy chủ. Kết nối với Scrapeless chuyển chúng sang một phiên được quản lý trong khi các hành động chromedp của bạn vẫn giữ nguyên.
Những gì bạn nhận lại
Phiên bản cư xử giống như bất kỳ phiên chromedp nào — Navigate, WaitVisible, Text, và CDP network.GetCookies đều hoạt động. Một vài quan sát chân thật từ việc xóa Cloudflare qua trình duyệt đám mây:
navigator.webdrivervắng mặt, vì vậy lần kiểm tra đầu tiên Cloudflare chạy đọc như một Chrome thật sự.- IP thoát khớp với
proxyCountry— một khu vực dân cư xóa một cách đáng tin cậy hơn nhiều so với IP của trung tâm dữ liệu. cf_clearancecó sẵn sau khi vượt qua — sử dụng lại cùng một phiên để mang lại sự cho phép qua các yêu cầu tiếp theo.- Khởi động phiên cho các trang cứng đầu — tải trang chủ của trang web trước trong cùng một phiên trước trang được bảo vệ, để bề mặt hành vi trông giống như một chuyến visit bình thường.
Kết luận: xóa Cloudflare, giữ Go của bạn
Xóa Cloudflare trong Go không phải là việc giải mã một thử thách — mà là việc trình bày một trình duyệt mà Cloudflare tin tưởng. Trình duyệt Scrapeless Scraping xử lý ba yếu tố mà nó đánh giá (dấu vân tay, hành vi, địa chỉ IP ra) ở phía máy chủ, vì vậy mã chromedp của bạn chỉ thay đổi URL kết nối của nó. Ghim proxyCountry vào một khu vực dân cư, chờ nội dung sau thử thách và đọc cf_clearance để xác nhận đã vượt qua. Để chạy cùng một trình duyệt đám mây từ Python, hãy xem hướng dẫn scrapyng sản xuất, và so sánh các gói trên trang định giá Scrapeless.
Sẵn sàng để Xây dựng Pipeline Xóa Cloudflare của bạn?
Tham gia cộng đồng của chúng tôi để nhận một gói miễn phí và kết nối với các nhà phát triển đang thu thập dữ liệu từ các trang web được bảo vệ bởi Cloudflare: Discord · Telegram.
Đăng ký tại app.scrapeless.com để nhận thời gian chạy trình duyệt Scraping miễn phí và chỉ định chromedp vào trình duyệt đám mây xóa Cloudflare trong quá trình render.
Câu hỏi thường gặp
Q: Tôi có cần một dịch vụ giải mã CAPTCHA riêng không?
Không, đối với một trình duyệt đã vượt qua. Cloudflare chủ yếu đánh giá dấu vân tay, hành vi và IP trong nền và phát hành cookie cf_clearance. Trình duyệt đám mây được thiết kế để vượt qua đánh giá đó trong quá trình render bình thường, do đó không cần bước giải đố riêng biệt nào.
Q: Tại sao lại dùng NewRemoteAllocator với NoModifyURL?
NewRemoteAllocator gắn chromedp vào một trình duyệt mà nó không khởi động. NoModifyURL yêu cầu chromedp sử dụng URL WebSocket của Scrapeless chính xác như đã cho, thay vì viết lại nó để khám phá một điểm cuối DevTools cục bộ.
Q: Tôi có cần một proxy không?
Không. Kết nối ra dân cư được xây dựng sẵn — đặt proxyCountry vào một vùng hoặc ANY. Cloudflare đánh giá IP ra, vì vậy một khu vực dân cư xóa đáng tin cậy hơn một địa chỉ trung tâm dữ liệu.
Q: Thử thách vẫn hiển thị trên một số trang — điều gì giúp được không?
Ghim proxyCountry vào một khu vực dân cư và làm nóng phiên bằng cách tải trang chủ của trang web trước trong cùng một phiên trước trang được bảo vệ, để bề mặt hành vi giống như một chuyến thăm bình thường.
Q: Việc xóa Cloudflare có hợp pháp không?
Truy cập dữ liệu có sẵn công khai thường được phép, nhưng các quy tắc khác nhau theo từng khu vực pháp lý và trang web. Xem xét các điều khoản dịch vụ của mục tiêu, tôn trọng chỉ thị của robot và tham khảo ý kiến luật sư cho bất kỳ điều gì nhạy cảm.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



