29 điểm bởi xguru 2021-11-29 | 12 bình luận | Chia sẻ qua WhatsApp
<p>- Nếu bạn xây dựng một dịch vụ thực hiện hàng triệu lượt tìm kiếm Google, bạn sẽ cần một giải pháp thay thế để tránh bị chặn<br /> - Cách dễ nhất là dùng proxy trả phí, nhưng chi phí khá đắt <br /> → Vì vậy tác giả đã viết một bài rất thú vị, giải thích chi tiết những gì mình đã thử<br /> <br /> - Ban đầu tác giả dùng AWS Lambda + Puppeteer <br /> → AWS cung cấp 16 region trên toàn thế giới, và cứ chạy Lambda 3 lần thì sẽ được gán một IP mới <br /> → Nếu chạy đồng thời 1000 Lambda thì sẽ sử dụng khoảng 250 IP public<br /> → 16 region * 250 = 4000 địa chỉ IP, như vậy là đủ để thực hiện hàng triệu lượt tìm kiếm Google mỗi tuần <br /> → Tác giả cũng đã thử trên GCP, và điều buồn cười là Google chặn IP cloud của chính họ quyết liệt hơn (so với AWS)<br /> → Đây là câu chuyện trong giai đoạn 2019~2020 nên có thể bây giờ đã thay đổi <br /> <br /> - Cách này có thể dùng để scrape Google/Bing/Amazon, nhưng vẫn có giới hạn<br /> → Nếu mục tiêu dùng các công ty chống bot như DataDome, Akamai, Imperva thì không áp dụng được <br /> → Họ xác định bot bằng rất nhiều phương pháp fingerprinting trình duyệt khác nhau<br /> → Google Picasso, Font/TLS/WebGL Fingerprinting..<br /> → Thực tế, hầu hết các dịch vụ scraping quy mô lớn đều dùng cloud + container Docker nên rất dễ bị nhận diện<br /> <br /> - Hạ tầng scraping khó bị phát hiện và có thể mở rộng <br /> → Có hai quy tắc để scraping thành công <br /> 1. Đừng giả mạo cấu hình trình duyệt <br /> 2. Điều quan trọng nhất là chỉ giả mạo cấu hình trình duyệt khi “không ai có thể nhận ra”<br /> → Vì vậy, kết luận là tốt nhất nên “dùng thiết bị thật”<br /> ⇨ Mua 500 thiết bị Android giá rẻ từ nhiều nhà sản xuất khác nhau và đăng ký các gói dữ liệu rẻ tiền<br /> ⇨ Phân tán chúng ở nhiều thành phố khác nhau (gần trạm phát sóng)<br /> ⇨ Tận dụng mã nguồn mở như DeviceFarmer/stf để điều khiển các thiết bị cùng lúc <br /> ⇨ Cài OS nhẹ như Android Go và cứ 5 phút lại bật chế độ máy bay để liên tục lấy IP mới<br /> ⇨ “4G carrier grade NAT”: NAT cấp nhà mạng 4G là cách được thiết kế để ngăn cạn kiệt địa chỉ IPv4, nên hàng trăm nghìn người cùng chia sẻ một IP, khiến việc chặn gần như bất khả thi<br /> → Tuy nhiên, cách này rất phiền vì phải mua 500 thiết bị Android, cần địa điểm lắp đặt và còn phải bảo trì phần cứng <br /> <br /> - Cải tiến: giả lập Android <br /> → Thay vì mua thiết bị Android, dùng Android-X8, Bluestacks, Android Studio Emulator thì sao?<br /> → Proxidize cho phép tạo proxy di động 4G<br /> → Lắp 50 USB dongle 4G trên một server<br /> → Mỗi server giả lập 50~100 thiết bị Android <br /> → Đặt các trạm này ở 5 thành phố khác nhau <br /> → Quản lý các trạm này bằng lệnh shell chắc chắn, ổn định </p>

12 bình luận

 
xguru 2021-12-06
<p>- Vượt qua phát hiện bot: cách scrape web mà không bị chặn https://vi.news.hada.io/topic?id=5304<br /> <br /> Proxy, dịch vụ scraping, phần mềm chống bot, v.v. đều được tổng hợp rất tốt trong bài viết trên.</p>
 
eajrezz 2021-12-06
<p>Một pha hack thật tuyệt!</p>
 
joone 2021-12-04
<p>https://www.diffbot.com/products/crawl/<br /> <br /> Cũng có các dịch vụ thực hiện crawling để scrape webpage. Dữ liệu đã scrape được lưu dưới dạng JSON sau khi loại bỏ thông tin không cần thiết.</p>
 
benjamin 2021-11-29
<p>Há hốc mồm...</p>
 
xguru 2021-11-29
<p>Nhân tiện nói sang chuyện hoàn toàn khác.. <br /> <br /> Cũng có những nơi như https://serpapi.com/ bán API hóa Google Search.. <br /> Nhưng bên này còn API hóa cả tìm kiếm của Naver và bán cùng luôn haha<br /> https://serpapi.com/naver-search-api<br /> <br /> Mức giá đáng kinh ngạc? là $250 cho 30.000 lượt tìm kiếm mỗi tháng</p>
 
v08zbv8fvlkjasdflkj 2021-11-29
<p>Có phải là vì quá đắt đến mức gây sốc không? Tôi chưa hình dung được.</p>
 
xguru 2021-11-29
<p>Ừ, rất đắt đấy. So với việc dùng proxy trả phí chẳng hạn thì vậy.<br /> Nhưng vì là API nên khá tiện vì không phải lo bị chặn</p>
 
hentol 2021-11-29
<p>Theo tiêu chuẩn trong nước thì có thể nghĩ đến các gói cước MVNO 0 won vẫn được cung cấp một lượng dữ liệu nhất định...<br /> Nhưng vì khó đăng ký số lượng lớn nên cái này chắc cũng khó.</p>
 
xguru 2021-11-29
<p>Với Google Fi thì có thể thêm tối đa 4 SIM dữ liệu bổ sung cho một đường dây, nên đây cũng có vẻ là một cách.</p>
 
nallwhy 2021-11-29
<p>Trước đây khi tôi từng scrape một thứ gì đó của naver<br /> thì trên AWS Lambda không được nhưng trên GCP Functions lại được,<br /> tôi đã nghĩ là do dải IP được mở, nhưng có vẻ cũng không hẳn là vậy.</p>
 
honore 2021-11-29
<p>Tôi đã làm theo cách số 1 rồi nên mới xem thử còn có những cách nào khác.. đúng là điều tôi chưa từng nghĩ tới.</p>
 
xguru 2021-11-29
<p>Thực ra, nếu làm theo cách đó thì phương án Lambda+Puppeteer số 1 cũng có vẻ ổn.<br /> Nhưng khi so với cách dùng Proxidize ở cuối bài thì có lẽ chi phí sẽ khác nhau tùy theo quy mô scraping.<br /> Càng cần xử lý khối lượng lớn thì Proxidize có lẽ sẽ ổn định hơn, nhưng để làm đơn giản thì cách số 1 cũng không tệ. <br /> <br /> Món https://proxidize.com/ được giới thiệu ở cuối khá thú vị. <br /> Đây là một giải pháp phần cứng + phần mềm cho phép bạn tự tạo và quản lý proxy di động 4G.<br /> Bản 5 USB dongle có giá $399. Nhìn vào danh sách quốc gia của người dùng thì có cả Hàn Quốc, nên chắc là dùng được?<br /> <br /> Không hẳn đến mức CGNAT, nhưng cũng có những giải pháp như Scrapoxy để quản lý cả một pool proxy phần mềm.<br /> - Scrapoxy - Công cụ quản lý pool proxy cho web crawler https://vi.news.hada.io/topic?id=2308</p&gt;