自动登录网站的脚本怎么写

wen 实用脚本 1

本文目录导读:

自动登录网站的脚本怎么写

  1. Python + Selenium(最通用)
  2. Python + Requests(无浏览器环境)
  3. JavaScript + Puppeteer(Node.js)
  4. 使用配置文件存储凭据
  5. 重要提示
  6. 安装依赖

我来帮你写一个自动登录网站的脚本,这里提供几种常用方法:

Python + Selenium(最通用)

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
import time
# 配置
username = "your_username"
password = "your_password"
login_url = "https://example.com/login"
# 初始化浏览器
driver = webdriver.Chrome()  # 需要安装chromedriver
try:
    # 打开登录页面
    driver.get(login_url)
    # 等待页面加载
    time.sleep(2)
    # 查找用户名输入框并输入
    username_input = driver.find_element(By.NAME, "username")  # 根据实际页面的元素修改
    username_input.send_keys(username)
    # 查找密码输入框并输入
    password_input = driver.find_element(By.NAME, "password")
    password_input.send_keys(password)
    # 查找登录按钮并点击
    login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
    login_button.click()
    # 等待登录完成
    time.sleep(3)
    # 验证是否登录成功
    if "dashboard" in driver.current_url:
        print("登录成功!")
    else:
        print("登录失败,请检查账号密码")
finally:
    driver.close()

Python + Requests(无浏览器环境)

import requests
# 配置
login_url = "https://example.com/login"
session = requests.Session()
# 登录数据(需要从网站源代码中获取表单字段)
payload = {
    'username': 'your_username',
    'password': 'your_password',
    'csrfmiddlewaretoken': '获取的token'  # 如果有CSRF token
}
# 设置请求头模拟浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Referer': login_url
}
# 获取CSRF token(如果有)
login_page = session.get(login_url)
# 从页面提取token
# csrf_token = login_page.cookies.get('csrftoken')
try:
    # 发送登录请求
    response = session.post(login_url, data=payload, headers=headers)
    # 检查是否登录成功
    if response.status_code == 200:
        print("登录成功!")
        # 可以继续访问其他页面
        dashboard = session.get("https://example.com/dashboard")
        print(dashboard.text)
    else:
        print("登录失败!")
except Exception as e:
    print(f"发生错误: {e}")

JavaScript + Puppeteer(Node.js)

const puppeteer = require('puppeteer');
async function autoLogin() {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    try {
        // 打开登录页面
        await page.goto('https://example.com/login');
        // 等待页面加载
        await page.waitForSelector('input[name="username"]');
        // 输入用户名和密码
        await page.type('input[name="username"]', 'your_username');
        await page.type('input[name="password"]', 'your_password');
        // 点击登录按钮
        await page.click('button[type="submit"]');
        // 等待跳转或加载完成
        await page.waitForNavigation({ waitUntil: 'networkidle0' });
        console.log('登录成功!');
        // 截图验证
        await page.screenshot({ path: 'login_result.png' });
    } catch (error) {
        console.error('登录失败:', error);
    } finally {
        await browser.close();
    }
}
autoLogin();

使用配置文件存储凭据

创建 config.json

{
    "username": "your_username",
    "password": "your_password",
    "login_url": "https://example.com/login"
}

Python代码:

import json
from selenium import webdriver
from selenium.webdriver.common.by import By
# 读取配置
with open('config.json', 'r') as f:
    config = json.load(f)
def auto_login(driver, config):
    driver.get(config['login_url'])
    # 查找和填写表单
    driver.find_element(By.ID, "username").send_keys(config['username'])
    driver.find_element(By.ID, "password").send_keys(config['password'])
    driver.find_element(By.ID, "login-btn").click()
# 使用示例
driver = webdriver.Chrome()
auto_login(driver, config)

重要提示

  1. 获取元素定位:查看网站HTML源代码,找到正确的元素ID/name/class
  2. 处理验证码:可能需要手动处理或使用打码平台
  3. 遵守法律法规:确保有权限自动化操作该网站
  4. 错误处理:添加异常处理和重试机制
  5. 安全考虑:不要在脚本中明文存储密码,使用环境变量

安装依赖

# Python
pip install selenium requests beautifulsoup4
# Node.js
npm install puppeteer

如果需要处理更复杂的登录场景(如验证码、多步验证),请告诉我具体需求,我可以提供更详细的解决方案。

抱歉,评论功能暂时关闭!