selenium用cookies 实现快速登录

python模块selenium用cookies 实现快速登录 

序言:今天在做12306快速登录的py,我一开始用selenium模拟浏览器密码登录,发现现在12306密码登录居然要短信验证码,我就想好麻烦,好慢。在查资料的过程中我就看见了cookies免密码登录。

目录

python模块selenium用cookies 实现快速登录 

cookies 定义

cookies 保存

cookies 使用

综合案例——12306


cookies 定义

cookie: 记录身份信息。当你登录一个网站,你都会在登录页面看到一个可勾选的选项“记住我”,如果你勾选了,以后你再打开这个网站就会自动登录,这就是cookie在起作用。
(1)当你登录微博账号123456,并勾选“记住我”。
(2)服务器就会生成一个cookies和123456这个账号绑定。
(3)接着服务器把这个cookies告诉你的浏览器,让浏览器把cookies存储到你的本地电脑。
(4)当下一次,浏览器带着cookies访问博客,服务器会知道你是123456,你不需要再重复输入 账号密码,即可直接访问。

总结:就是你第一次登录一个网站后,它会记住你的信息,下次你再访问就不用手动登录了。

cookies 保存

只用于参考,如果想用直接到综合案例——12306代码区复制

这个保存是12306为例,账号,密码和身份证后4位需要你们手动改一下。文章创建时间为2024年1月25日22:43:18,后面12306更新了的话可能不能直接套用。

还有手机验证码需要手动输入,有60秒输入时间。如果想改时间就只需要改代码中的60.

#导入selenium模块

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
import pickle
import time

#打开谷歌浏览器
driver = webdriver.Chrome()
#传入网站,打开网站
driver.get("https://kyfw.12306.cn/otn/resources/login.html")

#定位扫码登录,点击扫码登录
# driver.find_element_by_css_selector('#toolbar_Div > div.login-panel > div.login-box > ul > li.login-hd-account > a').click()

#密码登录
driver.find_element_by_css_selector('#J-userName').send_keys('账号')
driver.find_element_by_css_selector('#J-password').send_keys('密码')
driver.find_element_by_css_selector('#J-login').click()
driver.implicitly_wait(10)
driver.find_element_by_id('id_card').send_keys('身份证后四位')
driver.find_element_by_id('verification_code').click()
time.sleep(60)
driver.find_element_by_id('sureClick').click()
WebDriverWait(driver,10,1).until(EC.url_to_be('https://kyfw.12306.cn/otn/view/index.html'))
pickle.dump(driver.get_cookies(), open('./12306cookies.pkl', 'wb'))
print('cookies保存成功')

cookies 使用

   



  cookies = pickle.load(open('./12306cookies.pkl', 'rb'))
    for cookie in cookies:
        cookie_dic = {
            'domain': '.12306.cn',
            'name': cookie.get('name'),
            'value': cookie.get('value')
        }
        driver.add_cookie(cookie_dic)
    driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
    print('cookies载入成功')

综合案例——12306

首先我们登录一次用于保存cookies,

我做了一个if验证,如果你是第一次登录没有12306cookies.pkl文件,就会进入保存cookies。如果你有12306cookies.pkl 它就会直接免密码登录。

# 导入selenium模块
import os

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
import pickle
import time

# 打开谷歌浏览器
driver = webdriver.Chrome()
# 传入网站,打开网站
driver.get("https://kyfw.12306.cn/otn/resources/login.html")

# 定位扫码登录,点击扫码登录
# driver.find_element_by_css_selector('#toolbar_Div > div.login-panel > div.login-box > ul > li.login-hd-account > a').click()

# 密码登录
if not os.path.exists('./12306cookies.pkl'):
    driver.find_element_by_css_selector('#J-userName').send_keys('账号')
    driver.find_element_by_css_selector('#J-password').send_keys('密码')
    driver.find_element_by_css_selector('#J-login').click()
    driver.implicitly_wait(10)
    driver.find_element_by_id('id_card').send_keys('身份证后四位')
    driver.find_element_by_id('verification_code').click()
    time.sleep(60)
    driver.find_element_by_id('sureClick').click()
    WebDriverWait(driver, 10, 1).until(EC.url_to_be('https://kyfw.12306.cn/otn/view/index.html'))
    pickle.dump(driver.get_cookies(), open('./12306cookies.pkl', 'wb'))
    print('cookies保存成功')
else:
    cookies = pickle.load(open('./12306cookies.pkl', 'rb'))
    for cookie in cookies:
        cookie_dic = {
            'domain': '.12306.cn',
            'name': cookie.get('name'),
            'value': cookie.get('value')
        }
        driver.add_cookie(cookie_dic)
    driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
    print('cookies载入成功')  # 利用cookie实现快速登陆








  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值