本文目录导读:

浏览器扩展方式(最推荐)
Tampermonkey/Greasemonkey 用户脚本
// ==UserScript==
// @name 自动登录填写
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动填写登录表单
// @author You
// @match https://example.com/login
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 等待页面加载
window.addEventListener('load', function() {
// 填写用户名
const usernameField = document.querySelector('input[name="username"], input[name="email"], input[id*="username"], input[id*="email"]');
if (usernameField) {
usernameField.value = 'your_username';
// 触发输入事件
usernameField.dispatchEvent(new Event('input', { bubbles: true }));
}
// 填写密码
const passwordField = document.querySelector('input[type="password"]');
if (passwordField) {
passwordField.value = 'your_password';
passwordField.dispatchEvent(new Event('input', { bubbles: true }));
}
// 自动提交
setTimeout(() => {
const submitBtn = document.querySelector('button[type="submit"], input[type="submit"], button:contains("登录")');
if (submitBtn) submitBtn.click();
}, 500);
});
})();
Selenium 自动化脚本(Python)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
# 配置浏览器驱动
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
try:
# 打开登录页面
driver.get("https://example.com/login")
# 等待并填写用户名
username = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='username'], input[name='email']"))
)
username.clear()
username.send_keys("your_username")
# 填写密码
password = driver.find_element(By.CSS_SELECTOR, "input[type='password']")
password.clear()
password.send_keys("your_password")
# 点击登录按钮
submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit'], input[type='submit']")
submit_btn.click()
# 等待登录完成
time.sleep(3)
finally:
# 关闭浏览器
driver.quit()
Puppeteer (Node.js)
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://example.com/login');
// 填写表单
await page.type('input[name="username"]', 'your_username', { delay: 100 });
await page.type('input[type="password"]', 'your_password', { delay: 100 });
// 点击登录
await page.click('button[type="submit"]');
// 等待页面跳转
await page.waitForNavigation();
await browser.close();
})();
常见表单选择器集合
// 通用选择器集合
const selectors = {
// 用户名/邮箱字段
username: [
'input[name="username"]',
'input[name="email"]',
'input[name="user"]',
'input[id*="username"]',
'input[id*="email"]',
'input[type="email"]',
'input[placeholder*="用户"]',
'input[placeholder*="邮箱"]'
],
// 密码字段
password: [
'input[type="password"]',
'input[name="password"]',
'input[id*="password"]',
'input[placeholder*="密码"]'
],
// 提交按钮
submit: [
'button[type="submit"]',
'input[type="submit"]',
'button:contains("登录")',
'button:contains("登陆")',
'button:contains("登入")',
'a:contains("登录")'
]
};
安全建议
安全注意事项:
1. 避免明文存储密码:
- 使用环境变量
- 加密存储
- 使用密码管理器API
2. 验证码处理:
- OCR识别 (Tesseract)
- 打码平台API
- 手动干预
3. 反检测措施:
- 随机延迟
- 模拟人类行为
- User-Agent轮换
4. 2FA认证:
- TOTP (Google Authenticator)
- 短信验证码自动读取
使用示例
# 安装依赖 pip install selenium webdriver-manager npm install puppeteer # 运行Python脚本 python auto_login.py # 运行Node.js脚本 node auto_login.js
选择哪种方法取决于你的具体需求:
- 浏览器扩展:适合个人自动化特定网站
- Selenium/Puppeteer:适合测试、数据采集等批量操作
- 直接使用密码管理器:更安全,如LastPass、1Password等
需要我针对特定网站或场景提供更详细的脚本吗?