AI Hunter
Member
Bạn đã có API để đăng bài, vậy tại sao cần Selenium?
Vì có những việc API không làm được (hoặc rất khó làm), ví dụ: Tương tác với các nút bấm Javascript, vượt qua một số loại Captcha đơn giản, hoặc giả lập hành vi người dùng thật để tăng "Time on Site".
Trong bài viết này, chúng ta sẽ viết tool: Tự động mở Chrome -> Đăng nhập diễn đàn -> Vào topic quan trọng -> Comment "Up bài" để đưa nó lên top.
[Image of selenium automation architecture python to browser driver to web]
Khác với `requests` (chỉ gửi dữ liệu ngầm), Selenium sẽ thực sự mở một cửa sổ trình duyệt Chrome lên, di chuột, gõ phím y như bạn đang ngồi trước máy tính. Điều này giúp qua mặt các hệ thống chống Bot cơ bản.
* `webdriver-manager` là thư viện phụ cực hay, giúp tự động tải Chrome Driver phù hợp với phiên bản Chrome trên máy bạn (không cần tải thủ công nữa).
Tạo file `auto_xenforo.py`.
Bot "Up bài" thường bị ghét vì hay spam vô nghĩa ("Up", "Lên").
Hãy làm nó thông minh hơn bằng cách kết hợp với **API Llama 3** (ở bài trước):
1. Bot vào thread, đọc nội dung bài viết chính hoặc comment cuối cùng.
2. Gửi nội dung đó cho Llama 3: *"Hãy viết một comment ngắn gọn, lịch sự để thảo luận tiếp về chủ đề này"*.
3. Llama 3 trả về: *"Chủ đề này hay quá, không biết phiên bản XenForo 2.3 có hỗ trợ không nhỉ?"*.
4. Selenium điền câu đó vào ô comment.
-> Kết quả: Diễn đàn của bạn có những cuộc thảo luận chất lượng, tự nhiên, thành viên không hề biết đang nói chuyện với Bot!
Vì có những việc API không làm được (hoặc rất khó làm), ví dụ: Tương tác với các nút bấm Javascript, vượt qua một số loại Captcha đơn giản, hoặc giả lập hành vi người dùng thật để tăng "Time on Site".
Trong bài viết này, chúng ta sẽ viết tool: Tự động mở Chrome -> Đăng nhập diễn đàn -> Vào topic quan trọng -> Comment "Up bài" để đưa nó lên top.
1. Nguyên lý hoạt động
[Image of selenium automation architecture python to browser driver to web]
Khác với `requests` (chỉ gửi dữ liệu ngầm), Selenium sẽ thực sự mở một cửa sổ trình duyệt Chrome lên, di chuột, gõ phím y như bạn đang ngồi trước máy tính. Điều này giúp qua mặt các hệ thống chống Bot cơ bản.
2. Cài đặt
Mã:
pip install selenium webdriver-manager
* `webdriver-manager` là thư viện phụ cực hay, giúp tự động tải Chrome Driver phù hợp với phiên bản Chrome trên máy bạn (không cần tải thủ công nữa).
3. Triển khai Code (Full Source)
Tạo file `auto_xenforo.py`.
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
import random
# --- CẤU HÌNH ---
FORUM_URL = "https://your-forum.com"
USERNAME = "admin_user"
PASSWORD = "your_password"
THREAD_URL = "https://your-forum.com/threads/noi-quy-dien-dan.1/" # Link bài muốn Up
def setup_driver():
"""Khởi tạo trình duyệt Chrome"""
options = webdriver.ChromeOptions()
# options.add_argument("--headless") # Bỏ comment nếu muốn chạy ngầm (không hiện cửa sổ)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
return driver
def login(driver):
"""Đăng nhập vào XenForo"""
print("🌍 Đang truy cập trang chủ...")
driver.get(f"{FORUM_URL}/login")
time.sleep(2) # Đợi trang tải
print("🔑 Đang đăng nhập...")
# Tìm ô User/Pass (Cần Inspect Element trên web để lấy đúng name hoặc ID)
# Lưu ý: XenForo thường dùng name='login' và name='password'
user_input = driver.find_element(By.NAME, "login")
pass_input = driver.find_element(By.NAME, "password")
user_input.send_keys(USERNAME)
pass_input.send_keys(PASSWORD)
pass_input.send_keys(Keys.RETURN) # Nhấn Enter
time.sleep(5) # Đợi login xong
print("✅ Đăng nhập thành công!")
def bump_thread(driver, message):
"""Vào bài viết và comment"""
print(f"🚀 Đang vào bài viết: {THREAD_URL}")
driver.get(THREAD_URL)
time.sleep(3)
# Tìm khung soạn thảo (XenForo 2 dùng thẻ div có class fr-element)
# Lưu ý: Đây là phần khó nhất, class có thể thay đổi tùy theme.
try:
editor = driver.find_element(By.CSS_SELECTOR, ".fr-element")
editor.send_keys(message)
time.sleep(2)
# Tìm nút Gửi (Post reply)
submit_btn = driver.find_element(By.CSS_SELECTOR, ".button--primary.button--icon--reply")
submit_btn.click()
print("🎉 Đã Up bài thành công!")
time.sleep(3)
except Exception as e:
print(f"❌ Lỗi không tìm thấy khung soạn thảo: {e}")
# --- MAIN ---
if __name__ == "__main__":
driver = setup_driver()
try:
login(driver)
# Danh sách câu Up bài ngẫu nhiên để tránh bị Google đánh spam
messages = [
"Bài viết rất hữu ích, cảm ơn ad!",
"Up cho bác nào cần.",
"Thông tin cập nhật mới nhất đây ạ.",
"Mọi người chú ý nội quy nhé."
]
msg = random.choice(messages)
bump_thread(driver, msg)
except Exception as e:
print(f"Lỗi: {e}")
finally:
print("Đóng trình duyệt...")
driver.quit()
4. Kết hợp với Llama 3 (Smart Bump)
Bot "Up bài" thường bị ghét vì hay spam vô nghĩa ("Up", "Lên").
Hãy làm nó thông minh hơn bằng cách kết hợp với **API Llama 3** (ở bài trước):
1. Bot vào thread, đọc nội dung bài viết chính hoặc comment cuối cùng.
2. Gửi nội dung đó cho Llama 3: *"Hãy viết một comment ngắn gọn, lịch sự để thảo luận tiếp về chủ đề này"*.
3. Llama 3 trả về: *"Chủ đề này hay quá, không biết phiên bản XenForo 2.3 có hỗ trợ không nhỉ?"*.
4. Selenium điền câu đó vào ô comment.
-> Kết quả: Diễn đàn của bạn có những cuộc thảo luận chất lượng, tự nhiên, thành viên không hề biết đang nói chuyện với Bot!
5. Lưu ý quan trọng
- Class & ID: Selenium hoạt động dựa vào việc tìm các thẻ HTML. Nếu bạn đổi giao diện (Style) XenForo, các class `.fr-element` hay `.button--primary` có thể thay đổi. Bạn cần dùng F12 (Inspect) để cập nhật lại code.
- Đừng lạm dụng: Google rất ghét traffic ảo. Chỉ nên dùng tool này để "mồi" topic (Seeding) ở mức độ vừa phải.
Bài viết liên quan