Cách giải quyết AWS WAF trong Crawl4AI với tích hợp CapSolver

Anh Tuan
Data Science Expert
21-Oct-2025

Giới thiệu
AWS WAF (Web Application Firewall) là một dịch vụ bảo mật mạnh mẽ giúp bảo vệ các ứng dụng web khỏi các cuộc tấn công phổ biến có thể ảnh hưởng đến tính sẵn có, an toàn hoặc tiêu tốn tài nguyên quá mức. Mặc dù rất quan trọng để bảo vệ tài sản web, AWS WAF có thể tạo ra thách thức lớn cho các quy trình quét web tự động và trích xuất dữ liệu, thường chặn các trình quét hợp lệ.
Bài viết này cung cấp hướng dẫn toàn diện về cách tích hợp liền mạch Crawl4AI, một trình quét web tiên tiến, với CapSolver, một dịch vụ giải pháp CAPTCHA và chống bot hàng đầu, để giải quyết hiệu quả các bảo vệ AWS WAF. Chúng tôi sẽ chi tiết phương pháp tích hợp dựa trên API và mở rộng, bao gồm các ví dụ mã và giải thích, để đảm bảo các nhiệm vụ tự động hóa web của bạn có thể tiếp tục mà không bị gián đoạn.
Hiểu AWS WAF và các thách thức đối với quét web
AWS WAF hoạt động bằng cách theo dõi các yêu cầu HTTP(S) được chuyển đến một phân phối CloudFront của Amazon, một Load Balancer ứng dụng, một API Gateway của Amazon hoặc một API GraphQL của AWS AppSync. Nó cho phép bạn cấu hình các quy tắc chặn các mẫu tấn công phổ biến, chẳng hạn như SQL injection hoặc cross-site scripting, và cũng có thể lọc lưu lượng dựa trên địa chỉ IP, tiêu đề HTTP, nội dung HTTP hoặc chuỗi URI. Đối với các trình quét web, điều này thường có nghĩa là:
- Lọc yêu cầu: Các quy tắc WAF có thể nhận diện và chặn các yêu cầu có vẻ tự động hoặc độc hại.
- Xác minh dựa trên cookie: AWS WAF thường sử dụng các cookie cụ thể để theo dõi và xác minh các phiên người dùng hợp lệ. Nếu không có các cookie này, các yêu cầu thường bị từ chối.
- Thách thức động: Mặc dù không phải là CAPTCHA truyền thống, các cơ chế nền tảng có thể hoạt động như một rào cản, yêu cầu các token hoặc định danh phiên cụ thể để tiếp tục.
CapSolver cung cấp giải pháp mạnh mẽ để lấy cookie aws-waf-token cần thiết, điều này là chìa khóa để vượt qua AWS WAF. Khi tích hợp với Crawl4AI, điều này cho phép các trình quét của bạn mô phỏng hành vi của người dùng hợp lệ và truy cập thành công các trang web được bảo vệ.
💡 Ưu đãi đặc biệt cho người dùng tích hợp Crawl4AI:
Để chào mừng sự tích hợp này, chúng tôi đang cung cấp mã ưu đãi 6% —CRAWL4cho tất cả người dùng CapSolver đăng ký qua hướng dẫn này.
Chỉ cần nhập mã trong quá trình nạp tiền tại Bảng điều khiển để nhận thêm 6% tín dụng ngay lập tức.
Phương pháp tích hợp 1: Tích hợp API CapSolver với Crawl4AI
Cách hiệu quả nhất để xử lý các thách thức AWS WAF với Crawl4AI và CapSolver là thông qua tích hợp API. Phương pháp này bao gồm việc sử dụng CapSolver để lấy aws-waf-token cần thiết và sau đó chèn token này dưới dạng cookie vào ngữ cảnh trình duyệt của Crawl4AI trước khi làm mới trang đích.
Cách hoạt động:
- Truy cập ban đầu: Crawl4AI cố gắng truy cập trang web đích được bảo vệ bởi AWS WAF.
- Nhận diện thách thức WAF: Khi gặp phải WAF, kịch bản của bạn sẽ nhận ra nhu cầu về
aws-waf-token. - Lấy cookie AWS WAF: Gọi API của CapSolver bằng SDK của họ, chỉ định loại
AntiAwsWafTaskProxyLesscùng vớiwebsiteURL. CapSolver sẽ trả về cookieaws-waf-tokencần thiết. - Chèn cookie và làm mới: Sử dụng chức năng
js_codecủa Crawl4AI để đặtaws-waf-tokenđã nhận được dưới dạng cookie trong ngữ cảnh trình duyệt. Sau khi cài đặt cookie, trang sẽ được làm mới. - Tiếp tục hoạt động: Với cookie
aws-waf-tokenchính xác, Crawl4AI có thể truy cập trang được bảo vệ và tiếp tục các nhiệm vụ trích xuất dữ liệu của mình.
Ví dụ mã: Tích hợp API cho AWS WAF
Mã Python sau minh họa cách tích hợp API của CapSolver với Crawl4AI để giải quyết các thách thức AWS WAF. Ví dụ này nhắm đến trang đăng ký NFT của Porsche được bảo vệ bởi AWS WAF.
python
import asyncio
import capsolver
from crawl4ai import *
# TODO: thiết lập cấu hình của bạn
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx" # khóa API của bạn từ CapSolver
site_url = "https://nft.porsche.com/onboarding@6" # URL trang đích của bạn
cookie_domain = ".nft.porsche.com" # tên miền bạn muốn áp dụng cookie
captcha_type = "AntiAwsWafTaskProxyLess" # loại CAPTCHA mục tiêu của bạn
capsolver.api_key = api_key
async def main():
browser_config = BrowserConfig(
verbose=True,
headless=False,
use_persistent_context=True,
)
async with AsyncWebCrawler(config=browser_config) as crawler:
await crawler.arun(
url=site_url,
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# lấy cookie aws waf bằng sdk capsolver
solution = capsolver.solve({
"type": captcha_type,
"websiteURL": site_url,
})
cookie = solution["cookie"]
print("cookie aws waf:", cookie)
js_code = """
document.cookie = \'aws-waf-token=""" + cookie + """;domain=""" + cookie_domain + """;path=/\
\';
location.reload();
"""
wait_condition = """() => {
return document.title === \'Tham gia hành trình của Porsche vào Web3\';
}"""
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
wait_for=f"js:{wait_condition}"
)
result_next = await crawler.arun(
url=site_url,
config=run_config,
)
print(result_next.markdown)
if __name__ == "__main__":
asyncio.run(main())
Phân tích mã:
- Gọi SDK CapSolver: Phương thức
capsolver.solveđược gọi với loạiAntiAwsWafTaskProxyLessvàwebsiteURLđể lấy cookieaws-waf-token. Đây là bước quan trọng nơi AI của CapSolver giải quyết thách thức WAF và cung cấp cookie cần thiết. - Chèn JavaScript (
js_code): Chuỗijs_codechứa JavaScript đặt cookieaws-waf-tokentrong ngữ cảnh trình duyệt bằngdocument.cookie. Sau đó,location.reload()được kích hoạt để làm mới trang, đảm bảo yêu cầu tiếp theo bao gồm cookie hợp lệ mới được thiết lập. - Điều kiện
wait_for: Mộtwait_conditionđược xác định để đảm bảo Crawl4AI chờ đợi tiêu đề trang khớp với 'Tham gia hành trình của Porsche vào Web3', cho thấy WAF đã được vượt qua thành công và nội dung mong muốn đã được tải.
Phương pháp tích hợp 2: Tích hợp phần mở rộng CapSolver
Phần mở rộng trình duyệt của CapSolver cung cấp cách tiếp cận đơn giản để xử lý các thách thức AWS WAF, đặc biệt là khi tận dụng khả năng giải quyết tự động trong ngữ cảnh trình duyệt bền vững được quản lý bởi Crawl4AI.
Cách hoạt động:
- Ngữ cảnh trình duyệt bền vững: Cấu hình Crawl4AI sử dụng
user_data_dirđể khởi chạy một phiên trình duyệt giữ nguyên phần mở rộng CapSolver đã cài đặt và cấu hình của nó. - Cài đặt và cấu hình phần mở rộng: Cài đặt thủ công phần mở rộng CapSolver vào hồ sơ trình duyệt này và cấu hình khóa API CapSolver của bạn. Phần mở rộng có thể được thiết lập để tự động giải quyết các thách thức AWS WAF.
- Truy cập trang đích: Crawl4AI truy cập trang web được bảo vệ bởi AWS WAF.
- Giải quyết tự động: Phần mở rộng CapSolver, chạy trong ngữ cảnh trình duyệt, phát hiện thách thức AWS WAF và tự động lấy cookie
aws-waf-token. Cookie này sau đó được áp dụng tự động cho các yêu cầu tiếp theo. - Tiếp tục các hành động: Sau khi phần mở rộng giải quyết AWS WAF, Crawl4AI có thể tiếp tục các nhiệm vụ quét của mình, vì ngữ cảnh trình duyệt sẽ có các cookie hợp lệ cần thiết cho các yêu cầu tiếp theo.
Ví dụ mã: Tích hợp phần mở rộng cho AWS WAF (Giải quyết tự động)
Ví dụ này minh họa cách Crawl4AI có thể được cấu hình để sử dụng một hồ sơ trình duyệt với phần mở rộng CapSolver cho việc giải quyết AWS WAF tự động.
python
import asyncio
import time
from crawl4ai import *
# TODO: thiết lập cấu hình của bạn
user_data_dir = "/browser-profile/Default1" # Đảm bảo đường dẫn này được thiết lập đúng và chứa phần mở rộng đã cấu hình
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # Tùy chọn: cấu hình proxy nếu cần
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# Phần mở rộng sẽ tự động giải quyết AWS WAF khi trang được tải.
# Bạn có thể cần thêm điều kiện chờ hoặc time.sleep để phần mở rộng hoạt động
# trước khi tiếp tục các hành động khác.
time.sleep(30) # Ví dụ chờ, điều chỉnh theo nhu cầu của phần mở rộng
# Tiếp tục với các hoạt động khác của Crawl4AI sau khi AWS WAF được giải quyết
# Ví dụ, kiểm tra các phần tử hoặc nội dung xuất hiện sau khi xác minh thành công
# print(result_initial.markdown) # Bạn có thể kiểm tra nội dung trang sau thời gian chờ
if __name__ == "__main__":
asyncio.run(main())
Phân tích mã:
user_data_dir: Tham số này rất quan trọng để Crawl4AI khởi chạy một phiên trình duyệt giữ nguyên phần mở rộng CapSolver đã cài đặt và cấu hình của nó. Đảm bảo đường dẫn trỏ đến thư mục hồ sơ trình duyệt hợp lệ nơi phần mở rộng được cài đặt.- Giải quyết tự động: Phần mở rộng CapSolver được thiết kế để tự động phát hiện và giải quyết các thách thức AWS WAF. Một
time.sleepđược bao gồm như một mẫu chung để cho phép phần mở rộng hoàn thành các hoạt động nền. Đối với các giải pháp mạnh mẽ hơn, hãy xem xét sử dụng chức năngwait_forcủa Crawl4AI để kiểm tra các thay đổi trang cụ thể chỉ ra việc giải quyết AWS WAF thành công.
Ví dụ mã: Tích hợp phần mở rộng cho AWS WAF (Giải quyết thủ công)
Nếu bạn muốn kích hoạt việc giải quyết AWS WAF thủ công tại một điểm cụ thể trong logic quét của mình, bạn có thể cấu hình tham số manualSolving của phần mở rộng thành true và sau đó sử dụng js_code để nhấp vào nút giải quyết được cung cấp bởi phần mở rộng.
python
import asyncio
import time
from crawl4ai import *
# TODO: thiết lập cấu hình của bạn
user_data_dir = "/browser-profile/Default1" # Đảm bảo đường dẫn này được thiết lập đúng và chứa phần mở rộng đã cấu hình
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # Tùy chọn: cấu hình proxy nếu cần
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# Chờ một lúc để trang tải và phần mở rộng sẵn sàng
time.sleep(6)
# Sử dụng js_code để kích hoạt nút giải quyết thủ công được cung cấp bởi phần mở rộng CapSolver
js_code = """
let solverButton = document.querySelector(\'#capsolver-solver-tip-button\');
if (solverButton) {
// sự kiện nhấp chuột
const clickEvent = new MouseEvent(\'click\', {
bubbles: true,
cancelable: true,
view: window
});
solverButton.dispatchEvent(clickEvent);
}
"""
print(js_code)
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
)
result_next = await crawler.arun(
url="https://nft.porsche.com/onboarding@6",
config=run_config
)
print("Kết quả thực thi JS:", result_next.js_execution_result)
# Cho phép thời gian để AWS WAF được giải quyết sau khi kích hoạt thủ công
time.sleep(30) # Ví dụ chờ, điều chỉnh theo nhu cầu
# Tiếp tục với các hoạt động khác của Crawl4AI
if __name__ == "__main__":
asyncio.run(main())
Phân tích mã:
manualSolving: Trước khi chạy mã này, đảm bảoconfig.jscủa phần mở rộng CapSolver cómanualSolvingđược đặt thànhtrue.- Kích hoạt giải quyết:
js_codemô phỏng sự kiện nhấp chuột trên#capsolver-solver-tip-button, nút được cung cấp bởi phần mở rộng CapSolver để giải quyết thủ công. Điều này mang lại kiểm soát chính xác khi quá trình giải quyết AWS WAF được khởi động.
Kết luận
Việc tích hợp Crawl4AI với CapSolver cung cấp giải pháp mạnh mẽ và hiệu quả để vượt qua các bảo vệ AWS WAF, cho phép quét web và trích xuất dữ liệu không gián đoạn. Bằng cách tận dụng khả năng lấy aws-waf-token cần thiết của CapSolver và khả năng chèn js_code linh hoạt của Crawl4AI, các nhà phát triển có thể đảm bảo quy trình tự động của họ có thể truy cập các trang web được bảo vệ bởi WAF một cách liền mạch.
Sự tích hợp này không chỉ nâng cao độ ổn định và tỷ lệ thành công của các trình quét của bạn mà còn giảm đáng kể khối lượng công việc vận hành liên quan đến việc quản lý các cơ chế chống bot phức tạp. Với sự kết hợp mạnh mẽ này, bạn có thể tự tin thu thập dữ liệu từ các ứng dụng web được bảo vệ an toàn nhất.
Câu hỏi thường gặp (FAQ)
Câu hỏi 1: AWS WAF là gì và tại sao nó được sử dụng trong quét web?
Trả lời 1: AWS WAF (Web Application Firewall) là một dịch vụ bảo mật dựa trên đám mây giúp bảo vệ các ứng dụng web khỏi các cuộc tấn công phổ biến. Trong quét web, nó xuất hiện như một cơ chế chống bot chặn các yêu cầu được coi là đáng ngờ hoặc tự động, yêu cầu các kỹ thuật vượt qua để truy cập dữ liệu mục tiêu.
Câu hỏi 2: CapSolver giúp vượt qua AWS WAF như thế nào?
Trả lời 2: CapSolver cung cấp các dịch vụ chuyên biệt, như AntiAwsWafTaskProxyLess, để giải quyết các thách thức AWS WAF. Nó lấy cookie aws-waf-token cần thiết, sau đó được sử dụng bởi Crawl4AI để mô phỏng hành vi của người dùng hợp lệ và truy cập trang web được bảo vệ.
Câu hỏi 3: Các phương pháp tích hợp chính của AWS WAF với Crawl4AI và CapSolver là gì?
Trả lời 3: Có hai phương pháp chính: tích hợp API, trong đó API của CapSolver được gọi để lấy aws-waf-token sau đó được chèn thông qua js_code của Crawl4AI, và tích hợp tiện ích mở rộng trình duyệt, nơi tiện ích CapSolver tự động xử lý thách thức WAF trong một ngữ cảnh trình duyệt bền vững.
Câu hỏi 4: Có cần thiết phải sử dụng máy chủ proxy khi giải AWS WAF với CapSolver không?
Trả lời 4: Mặc dù không luôn luôn cần thiết, việc sử dụng máy chủ proxy có thể mang lại lợi ích, đặc biệt nếu các hoạt động quét của bạn yêu cầu duy trì tính bất danh hoặc mô phỏng các yêu cầu từ các vị trí địa lý cụ thể. Các nhiệm vụ của CapSolver thường hỗ trợ cấu hình máy chủ proxy.
Câu hỏi 5: Những lợi ích của việc tích hợp Crawl4AI và CapSolver cho AWS WAF là gì?
Trả lời 5: Việc tích hợp giúp xử lý WAF tự động, cải thiện hiệu quả quét, tăng cường độ bền của trình quét trước các cơ chế chống bot, và giảm chi phí vận hành bằng cách tối thiểu hóa can thiệp thủ công.
Tài liệu tham khảo
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 Captcha của AWS bằng NodeJS
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách giải quyết Captcha / Thách thức AWS bằng Node.JS.

Anh Tuan
03-Nov-2025

So sánh Web Scraping và API: Thu thập dữ liệu bằng web scraping và API
Học cách phân biệt giữa web scraping và API, các ưu điểm và nhược điểm của chúng, và phương pháp nào hiệu quả nhất để thu thập dữ liệu web có cấu trúc hoặc không có cấu trúc.

Anh Tuan
29-Oct-2025

Giải CAPTCHA AWS WAF: Giải pháp Token & Hình ảnh cho Người quét trang web
Học cách giải quyết các thách thức CAPTCHA của AWS WAF cho việc quét web và tự động hóa. Hướng dẫn thực tế về các giải pháp dựa trên token và hình ảnh, so sánh giữa API và tích hợp trình duyệt, cũng như các nguyên tắc tốt nhất.

Anh Tuan
28-Oct-2025

Cách giải quyết AWS WAF trong Crawl4AI với tích hợp CapSolver
Học cách giải quyết các biện pháp bảo vệ AWS WAF trong Crawl4AI bằng cách sử dụng API của CapSolver và phương pháp tích hợp phần mở rộng trình duyệt. Hướng dẫn này cung cấp các ví dụ mã code để quét web mượt mà.

Anh Tuan
21-Oct-2025

Giải CAPTCHA AWS WAF tốt nhất cho Tự động hóa và Quét dữ liệu
Khám phá giải pháp CAPTCHA cho AWS WAF tốt nhất. Giải pháp dựa trên AI của CapSolver vượt qua các thách thức WAF ngay lập tức, đảm bảo việc quét web và tự động hóa không gián đoạn trên quy mô lớn.

Anh Tuan
17-Oct-2025


