
Anh Tuan
Data Science Expert

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.
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à:
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.
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.
aws-waf-token.AntiAwsWafTaskProxyLess cùng với websiteURL. CapSolver sẽ trả về cookie aws-waf-token cần thiết.js_code của Crawl4AI để đặt aws-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.aws-waf-token chí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.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.
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ã:
capsolver.solve được gọi với loại AntiAwsWafTaskProxyLess và websiteURL để lấy cookie aws-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.js_code): Chuỗi js_code chứa JavaScript đặt cookie aws-waf-token trong ngữ cảnh trình duyệt bằng document.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.wait_for: Một wait_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ầ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.
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ó.aws-waf-token. Cookie này sau đó được áp dụng tự động cho các yêu cầu tiếp theo.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.
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.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ăng wait_for củ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.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.
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ảo config.js của phần mở rộng CapSolver có manualSolving được đặt thành true.js_code mô 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.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 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.
Học cách tự động giải CAPTCHA AWS WAF bằng cách sử dụng tiện ích mở rộng trình duyệt và tích hợp API. Hướng dẫn này bao gồm nhận dạng hình ảnh, thách thức dựa trên token và giải pháp của CapSolver để tự động hóa mượt mà và quét web.

Nâng cao kỹ năng giải quyết các thách thức CAPTCHA của Amazon AWS WAF trong tự động hóa trình duyệt với các chiến lược chuyên gia. Học cách tích hợp CapSolver để có các quy trình tự động hóa liền mạch và hiệu quả. Hướng dẫn này bao gồm các giải pháp dựa trên token và phân loại.
