(Phần 2) Tôi đã Crawler 300M bài viết, 1.3B Comment, 130M người dùng của Facebook Việt Nam dư lào!
Male avatar

binhvq viết ngày 08/03/2021

Chào các bạn, sau phần 1 nhận được sự quan tâm của các bạn, mình cố gắng để viết phần 2.

Ở phần 1 mình đã nêu cách crawler được danh sách Page, Group. Nhưng với kỹ thuật đó sau thời gian ngắn chạy mình thấy nó không còn hiệu quả bởi:

  • Tốc độ chậm: Phải sleep 10-30 giây/request
  • Yêu cầu phải có cookie đăng nhập
  • Có khả năng bị khóa account: Khi xảy ra trường hợp này cần phải khôi phục lại tài khoản, và thay đổi mật khẩu. Tài khoản facebook của mình đã phải thay đổi mật khẩu liên tục vì lý do này. Mật khẩu ban đầu là Matkhaucuatoi1, sau vài ngày chạy, bị checkpoint liên tục thì mật khẩu của mình đã bị biến thành Matkhaucuatoi33. Và không nhớ nổi chính xác con số đăng sau mật khẩu của mình. Cần có 1 phương pháp để giải quyết vấn đề này. Suy nghĩ về cơ chế checkpoint này của Facebook và mình đã nghĩ ra 1 cách là giấu mình vào trong đống lá khô như con tắc kè hoa, thay đổi màu sắc theo màu của môi trường bằng cách khá đơn giản như sau: Dùng 1 tài khỏan facebook mới. Cài OpenVPN lên proxy, kết nối với OpenVPN và đăng nhập Facebook. Tất nhiên sau khi đăng nhập sẽ bị checkpoint, by pass xong đoạn checkpoint, mình bắt đầu cho tài khoản facebook này kết bạn, comment... thao tác như một tài khoản facebook bình thường. Sau 2 ngày thì mình bắt đầu lấy cookie gán vào header của crawler, và từ đó không hề bị checkpoint nữa. Áp dụng phương pháp trên với 10 account của ae bạn bè xin được. Tốc độ đã cải thiện hẳn, và cũng không còn bị checkpoint nữa. Có lẽ Facebook nghĩ mình đã chuyển ra nước ngoài sống. he he.

Vẫn chưa hài lòng với tốc độ ở trên, và trong quá trình crawler đã phát hiện ra 1 số page, group không phải là tiếng Việt, cần có phương pháp để lọc các page này.

  • Kiểm tra tên page có dấu hay không: Phương pháp này lọc hơi quá, ví dụ: Genk.vn thì sẽ bị coi là 1 page không phải tiếng Việt
  • Dùng SVM để predict xem có phải tiếng việt hay không
  • Đưa page/group vào diện nghi vấn và duyệt lại bằng tay
  • Xóa toàn bộ các page không phải là tiếng Việt bằng tay, lúc này mình có khoảng 200.000 page/group(Hiện tại là hơn 7m page/group)

Với các phương pháp trên thì cũng đã loại bỏ được khoảng 1/3 page/group không phải là tiếng Việt. Sau 1 khoảng chạy ổn thì mình thấy khá mệt với cách kiểm tra và phải duyệt bằng tay bên trên, mình đã áp dụng api detect language của Google Dịch bằng Python package có tên là googletrans, và áp dụng thêm 1 phương pháp cào page mới đó là tìm kiếm page liên quan, như hình bên dưới là mình các Page liên quan đến Page của Kipalog trên FB.

alt text

Nhưng điều này chỉ áp dụng với page, riêng với group không có chỗ nào hiển thị group liên quan cả.

Sau 1 khoảng thời gian chạy ổn định, nhưng số lượng comment tăng rất ít, thì nhận thấy, các page này có rất ít comment, ta cần phương pháp tốt hơn để tăng tốc tốc độ cào được comment của người dùng.
Tôi tìm đến mục Video nhất là các mục livestream game, bán hàng. Với category bán hàng, có rất nhiều bạn comment để lại số điện thoại ở đó.

alt text

Hình ảnh trên có đến 3.3k bình luận, 1 số lượng lớn trong video trên là comment số điện thoại để mua hàng.

Facebook Watch: https://www.facebook.com/watch . Tại đây có thể crawler thoải mái mà không cần phải login, cũng như FB không hề chặn rate limit(Hiện tại có thể đã thay đổi).

Với Facebook chắc nhiều bạn đã biết có thể crawler qua rất nhiều trang, như trang m.facebook.com, hoặc có thể disable javascript đi để crawler, dùng user agent là 1 chiếc điện thoại cùi bắp, crawler qua giao diện cũ, giao diện mới.

Mình đã áp dụng tất cả các cách trên, chỉ có 1 cách mình chưa thử, đó là qua API của App facebook trên điện thoại. Theo mình tìm hiểu thì cái này cần 1 chiếc điện thoại đã được root và cần 1 vài kỹ thuật để bypass ssl hoặc bạn có một thiết bị cũ hơn Android 7.

Phần tiếp theo sẽ là Crawler Post các bạn nhé. Cảm ơn các bạn đã quan tâm.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

binhvq

2 bài viết.
39 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
44 13
Vào một ngày đẹp trời, tôi đọc được bài báo về việc 1 trang web nọ có 1 số thanh niên bán dữ liệu người dùng Facebook, tôi bắt đầu lân la và kênh t...
binhvq viết 3 tháng trước
44 13
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
39 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!