使用Selenium添加访问cookie, 实现淘宝自动登录

本文介绍如何使用Selenium和Firefox浏览器实现淘宝网站的自动化登录流程,通过手机扫码保存cookies,并利用这些cookies实现后续的免登录访问,避免了重复的登录验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

淘宝在不登录的情况下, 许多信息没有显示, 而在登录滑块验证时, selenium模拟会被检测出来, 所以我们利用手机扫码登录, 保存cookies并实现之后登录访问.

登录并保存cookie
import json
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
dirver = webdriver.Firefox(executable_path=r"D:\tools\geckodriver.exe", options=options)
dirver.get(
    'https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fbuyertrade.taobao.com%2Ftrade%2Fitemlist%2Flist_bought_items.htm%3Fspm%3D875.7931836%252FB.a2226mz.4.66144265Vdg7d5%26t%3D20110530')
# 这里是为了等待手机扫码登录, 登录后回车即可
input("请回车登录")
dictCookies = dirver.get_cookies()
jsonCookies = json.dumps(dictCookies)
# 登录完成后,将cookies保存到本地文件
with open("cookies_tao.json", "w") as fp:
    fp.write(jsonCookies)
读取cookie实现免登陆访问
import json
import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument("--headless")
dirver = webdriver.Firefox(executable_path=r"D:\tools\geckodriver.exe", options=options)
# 初次建立连接, 随后方可修改cookie
dirver.get('http://www.taobao.com')
# 删除第一次登录是储存到本地的cookie
dirver.delete_all_cookies()
# 读取登录时储存到本地的cookie
with open("cookies_tao.json", "r", encoding="utf8") as fp:
    ListCookies = json.loads(fp.read())

for cookie in ListCookies:
    dirver.add_cookie({
        'domain': '.taobao.com',  # 此处xxx.com前,需要带点
        'name': cookie['name'],
        'value': cookie['value'],
        'path': '/',
        'expires': None
    })

# 再次访问页面,便可实现免登陆访问
dirver.get("https://www.taobao.com")
time.sleep(3)
# 将页面保存为图片用于查看是否登录成功
dirver.save_screenshot("./taobao.png")
dirver.quit()

<think>嗯,用户想知道如何用SeleniumCookie实现登录功能。首先,我得回忆一下之前学过的Selenium操作Cookie的方法。记得Selenium可以通过`add_cookie()`方法添加Cookie,但需要先访问目标网站,这样域名才会匹配。然后,可能需要先加载保存好的Cookie,比如从文件里读取。对了,用户可能已经通过其他方式获取了有效的Cookie,比如手动登录后保存下来,或者通过API获取。这时候,关键步骤应该是先访问目标网站的主页,确保域正确,然后逐个添加Cookie。之后刷新页面,应该就能保持登录状态了。 另外,要注意的是,添加Cookie前可能需要处理一些参数,比如域名、路径、有效期等。有些网站可能有HttpOnly的Cookie,这时候用Selenium可能无法添加,需要确保保存的Cookie不包含这些限制。还有,用户可能遇到验证码或者动态加载的问题,这时候可能需要结合其他方法,比如用2Captcha之类的服务来处理验证码,或者用Playwright来拦截请求。不过用户的问题主要是关于CookieSelenium的,所以重点应该放在如何正确加载和使用Cookie上。 还需要考虑如何保存和加载Cookie。可能要用到JSON文件来存储Cookie信息,这样每次启动浏览器时可以读取并添加。另外,测试的时候要确保浏览器实例没有残留的Cookie,可能需要先删除所有现有Cookie,或者使用无痕模式。还有,User-Agent的一致性也很重要,不同的User-Agent可能导致会话无效,所以设置合适的User-Agent参数也是必要的。 最后,要提醒用户注意Cookie的有效期,过期的Cookie会无法登录,需要定期更新。另外,某些网站可能有安全机制,检测到Cookie异常会触发二次验证,这时候可能需要更复杂的处理。不过基本的流程应该是访问主页,添加Cookie,刷新页面,验证登录状态。</think>### 如何使用 SeleniumCookie 实现登录功能? #### 核心步骤 1. **获取有效 Cookie** - 手动登录目标网站后,通过浏览器开发者工具(如 Chrome 的 `Application > Storage > Cookies`)复制 Cookie 信息[^3]。 - 或通过编程方式(如 Python 的 `requests` 库)模拟登录并提取 Cookie。 2. **配置 Selenium 浏览器** 使用无痕模式或新配置文件,避免残留 Cookie 干扰: ```python from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--incognito') # 无痕模式 driver = webdriver.Chrome(options=options) ``` 3. **加载 Cookie 并跳转页面** ```python # 先访问目标域名(必须与 Cookie 的 domain 匹配) driver.get('https://example.com/login') # 添加 Cookie(需包含 name, value, domain 等必要字段) driver.add_cookie({ 'name': 'session_id', 'value': 'your_cookie_value', 'domain': '.example.com', 'path': '/', 'expiry': 1698768000 # 可选,Unix 时间戳格式 }) # 刷新页面触发登录态 driver.refresh() ``` #### 关键注意事项 - **Cookie 有效性**:确保 Cookie 未过期且未被服务器端撤销。 - **域名匹配**:添加 Cookie 前必须访问目标域名,否则会报错 `InvalidCookieDomainException`。 - **动态内容处理**:若页面包含异步加载内容,需添加显式等待: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC WebDriverWait(driver, 10).until(EC.presence_of_element_located(('id', 'user_profile'))) ``` #### 扩展优化 - **持久化 Cookie**:将 Cookie 保存为 JSON 文件,实现复用: ```python import json # 保存 Cookie with open('cookies.json', 'w') as f: json.dump(driver.get_cookies(), f) # 加载 Cookie with open('cookies.json', 'r') as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) ``` - **反检测机制**:部分网站会检测自动化工具,可通过修改浏览器指纹规避[^2]: ```python options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...') ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值