Python实现网页模拟登录的三种核心方法与代码示例
本文系统讲解使用Python绕过网页权限验证的三种实战方案。分别演示如何从抓包结果中提取有效Cookie直接发起请求、利用requests会话对象自动处理Form表单提交,以及基于Selenium驱动真实浏览器完成动态元素交互。附带完整可运行代码、参数定位步骤及版本兼容性注意事项。
实现网页模拟登录的目标与准备工作
在爬虫开发与自动化测试场景中,直接访问受保护页面通常需要身份验证。掌握模拟登录机制可高效获取私有数据或触发特定功能。执行前请确保已安装 requests 与 selenium 库,并准备好目标网站的登录入口及对应版本的浏览器驱动。
第1步:提取有效Cookie进行直连请求
当网站采用无状态API或前后端分离架构时,可直接复用已登录用户产生的Session标识(Cookie)调用内部接口。该方式资源消耗最低且最接近真实业务逻辑。
import requests
headers = {
"Cookie": "粘贴你手动登录后浏览器捕获的完整Cookie值"
}
url = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
print(response.json())
获取与替换Cookie的操作流程如下:
- 打开目标网页并按下
F12开启开发者工具,切换至网络(Network)选项卡。 - 输入账号密码完成登录,观察左侧列表中出现的相关请求文件。
- 点击首个主请求,滚动至右侧“请求标头(Request Headers)”,找到
Cookie:字段后全选复制。


将复制内容填入代码 headers 字典中,运行脚本后即可成功拉取受保护页面的JSON数据:

第2步:通过Session对象自动提交Form表单
针对需要主动发送认证凭证的网站,可借助 requests.Session() 保持上下文会话。该对象会自动处理服务端下发后的新Cookie,适合处理标准HTML表单提交。
import requests
session = requests.session()
login_url = "https://passport.17k.com/ck/user/login"
form_data = {
"loginName": "你的登录账号",
"password": "你的账户密码"
}
session.post(login_url, data=form_data)
protected_url = "https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919"
resp = session.get(protected_url)
print(resp.json())
定位登录接口与Form参数的步骤:
- 进入目标网站点击书架等需要登录的模块,在跳转页输入测试账号密码。
- 保持在Network面板,筛选类型或搜索
login关键词。 - 点击登录触发的请求,向下滚动查找负载(Payload 或 Form Data),记录键名(如
loginName、password)。



提交成功后,同一 session 实例携带的凭证即可访问后续接口,终端输出正确的分页数据即为完成标志:

第3步:基于Selenium模拟浏览器自动化交互
当目标站点采用强校验机制(如动态DOM渲染或复杂协议)时,必须依赖真实浏览器内核。以下演示完整的环境配置与元素定位流程。
- 环境要求:安装匹配的
Chrome浏览器及同版webdriver。版本不一致将直接引发启动失败异常。 - 核心技巧:部分现代网页登录框嵌套在
<iframe>中。操作前务必在Elements面板按Ctrl+F搜索iframe或frame,否则定位器将无法命中目标节点。 - 路径获取:推荐右键检查元素后,在Copy菜单中复制Xpath表达式作为基线参考。
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
driver = webdriver.Chrome()
driver.get("https://user.17k.com/www/bookshelf/")
time.sleep(2)
# 切换至登录弹窗所在的iframe框架
el_iframe = driver.find_element(By.XPATH, '/html/body/div[4]/div/div/iframe')
driver.switch_to.frame(el_iframe)
# 等待输入框出现后写入凭证
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//dd[@class="user"]/input')))
driver.find_element(By.XPATH, '//dd[@class="user"]/input').send_keys("你的账号")
driver.find_element(By.XPATH, '//dd[@class="pass"]/input').send_keys("你的密码")
# 勾选隐私协议复选框并提交
driver.find_element(By.XPATH, '//*[@id="protocol"]').click()
driver.find_element(By.XPATH, '//dd[@class="button"]/input').click()

执行异常排查与风险提示
上述代码在实际生产环境中可能因网站策略调整而报错。若遇到 ElementNotInteractableException 或空指针,通常是因为动态类名变更或反爬检测拦截。建议在正式运行前先在浏览器控制台逐行调试XPath语法;涉及账号安全时,切勿将真实密码硬编码于公开仓库,应改用环境变量读取或本地配置文件加密存储。
以上就是Python实现网页模拟登录的三种核心方法与代码示例的详细内容,更多关于Python网页爬虫与自动化操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









