Công cụ tự động gửi lời mời kết bạn từ danh sách People You May Know của Facebook, có giao diện đồ hoạ (Tkinter), tự động đăng nhập lại khi cookie hết hạn và hỗ trợ xác thực 2 yếu tố (TOTP).
- Tính năng
- Ảnh chụp màn hình
- Yêu cầu
- Cài đặt
- Sử dụng
- Cấu trúc dự án
- Cách hoạt động
- Cảnh báo & rủi ro
- FAQ
- Đóng góp
- Giấy phép
- Tác giả
- ✅ GUI Tkinter — không cần thao tác trên terminal.
- ✅ Tự động đăng nhập lại khi cookie chết, dùng email/mật khẩu + 2FA key.
- ✅ Xác thực 2 yếu tố (TOTP) thông qua
pyotp. - ✅ Try/except toàn cục cho mọi request → không crash khi mất mạng / Facebook trả lỗi.
- ✅ Phát hiện auth-error (mã
1357001,1357004, …) và retry sau khi refresh phiên. - ✅ Log realtime trong cửa sổ, có nút Start / Stop / Clear.
- ✅ Sleep có thể ngắt — bấm Dừng phản hồi tức thì.
- ✅ Tuỳ chỉnh delay giữa mỗi lượt gửi lời mời.
- Python 3.8 trở lên
- Hệ điều hành: Windows / macOS / Linux (Tkinter mặc định kèm Python)
- Tài khoản Facebook hợp lệ (khuyến nghị tài khoản phụ để test)
| Package | Mục đích |
|---|---|
requests |
Gửi HTTP request đến Facebook GraphQL & b-graph API |
pyotp |
Sinh mã 2FA TOTP |
attrs |
Sử dụng trong formAll() để tạo counter |
# 1. Clone repository
git clone https://github.com/<your-user>/addFriendAutomatic.git
cd addFriendAutomatic
# 2. (Khuyến nghị) tạo virtualenv
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# 3. Cài thư viện
pip install -r requirements.txtpython main.pyTrong cửa sổ:
- Cookie: dán cookie Facebook (
c_user=...; xs=...; ...). - Email/SĐT/UID + Mật khẩu: dùng để tự động đăng nhập lại khi cookie chết. Có thể bỏ trống nếu không cần.
- 2FA Key: secret TOTP (chuỗi base32 Facebook cấp khi bật xác thực 2 lớp). Bỏ trống nếu không bật 2FA.
- Delay (giây): thời gian chờ giữa mỗi lượt gửi lời mời (mặc định 5).
- Bấm Đăng nhập / Kiểm tra cookie → khi thành công, nút Bắt đầu add friend sẽ kích hoạt.
- Bấm Dừng bất kỳ lúc nào để tạm dừng tiến trình.
- Đăng nhập vào https://www.facebook.com trên trình duyệt.
- Mở DevTools (
F12) → tab Application → Cookies →https://www.facebook.com. - Copy toàn bộ cookie dưới dạng
name1=value1; name2=value2; ....
💡 Nên dùng các extension như Cookie-Editor để export nhanh hơn.
Khi bật xác thực 2 yếu tố trên Facebook, chọn Use authentication app → Facebook hiển thị một chuỗi base32 (vd: JBSWY3DPEHPK3PXP). Copy chuỗi đó vào ô 2FA Key.
addFriendAutomatic/
├── login.py # Module đăng nhập Facebook qua b-graph API + 2FA
├── main.py # Logic chính + GUI Tkinter
├── requirements.txt
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── SECURITY.md
├── CODE_OF_CONDUCT.md
├── CHANGELOG.md
├── .gitignore
└── screenshots/
┌──────────────┐ cookie ┌──────────────────┐
│ GUI input │ ───────────▶ │ dataGetHome() │ ──► fb_dtsg, jazoest, FacebookID, ...
└──────┬───────┘ └────────┬─────────┘
│ credentials │ cookie chết?
▼ ▼
┌──────────────┐ yes ┌─────────────────────────┐
│ login.py │ ◀─────│ refresh_session(...) │
│ b-graph auth │ └────────────┬────────────┘
└──────┬───────┘ │ cookie mới
│ ▼
│ ┌──────────────────┐
└─────────────────▶ │ Loop add friend │
│ - getSuggest │
│ - sendAddFriend │
└──────────────────┘
- Mỗi request GraphQL được bọc qua
_post_graphql()— phát hiện auth error sẽ tự gọirefresh_session()và retry một lần. print()ở scope module được redirect sangqueue.Queueđể hiển thị an toàn từ thread phụ.
⚠️ Đọc kỹ trước khi sử dụng.
- Việc tự động hoá hành vi gửi lời mời kết bạn vi phạm Điều khoản dịch vụ của Facebook. Tài khoản của bạn có thể bị tạm khoá / vô hiệu hoá vĩnh viễn.
- Tool chỉ phục vụ mục đích học tập, nghiên cứu reverse-engineering và tự động hoá cá nhân. Tác giả không chịu trách nhiệm với bất kỳ hậu quả nào.
- Không dùng để spam, lừa đảo, thu thập dữ liệu trái phép, hoặc bất kỳ hành vi vi phạm pháp luật nào.
- Không chia sẻ cookie / mật khẩu / 2FA key của bạn với người khác.
Q: Tool báo "Cookie không hợp lệ" liên tục. A: Cookie có thể đã hết hạn / bị logout từ thiết bị khác. Hãy lấy cookie mới hoặc nhập email + mật khẩu để auto re-login.
Q: Có hỗ trợ proxy không?
A: Hiện tại chưa, nhưng dễ mở rộng — bạn có thể thêm proxies={"http": ..., "https": ...} vào mainRequests() và login.py.
Q: Vì sao phải có 2FA key thay vì OTP?
A: OTP đổi 30s/lần → không thể nhập tay khi auto re-login. 2FA key (TOTP secret) cho phép pyotp sinh OTP đúng thời điểm.
Q: Tool chạy headless / CLI được không?
A: Phiên bản hiện tại chỉ có GUI. Bạn có thể tự gọi getSuggestFriends() / sendAddFriend() từ script riêng nếu muốn CLI.
Pull Request được hoan nghênh! Vui lòng đọc CONTRIBUTING.md trước khi submit.
Dự án phát hành theo giấy phép MIT.
Nguyễn Minh Huy (RainTee)
- GitHub: @MinhHuyDev
- Module
login.py— Facebook Login V2 (fbchat-v2) (28/12/2022, last update 15/4/2026)
If you find this project useful, give it a ⭐ on GitHub!