提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@[TOC](python无需验证码免登录12306抢票 --selenium(2))
前言
提示:这里可以添加本文要记录的大概内容:
就在刚刚我抢的票:2025年1月8日 上午9.00多 抢到了哈哈哈哈— 其实还是有用的我是在 8:59:56运行程序的
上一篇帖子,我们已经了解了如何用python自动登录12306实现自动抢票,现在我们来一个进阶的版本,实现cookie免登录,这样可绕过验证码实现自动抢票。同时包括环境如何配置,也在这个帖子里面。
上一篇帖子的链接:https://blog.csdn.net/xaing1314/article/details/144868504
配置selenium自动化的帖子链接:https://blog.csdn.net/xaing1314/article/details/144869489?spm=1001.2014.3001.5502
需求:上此的帖子,需要自动登录,并且需要手机验证码,在真实抢票中太过繁琐,所有我自己也在思索,找了帖子和B站,终于实现了用cookie技术自动免登录12306。在今天上午9.00 (2025-01-07)抢票(2025-01-21)成功。
如何使用:1.比如9.00正式抢票,可以在8.53左右二维码扫描登录,当然是要配合下方程序,这样9.00可以正式抢票无需登录,cookie也不会失效。2.直接在8.59.58左右运行此程序,即可。
今日实战:今天运行其实是抢到了,但是他一直在等待,也就是页面一直停在哪里,其实那个时候你可以用手点击操作,因为我们是进来了,不需要去管程序的对错。也就是说,程序帮你操作到哪一步,如果卡住了,直接上手。这也让我有想做一个多线程的想法,将多线程加入这个程序中。
提示:以下是本篇文章正文内容,下面案例可供参考
一、cookie免登录
1.cookie的讲解: Cookie也被称为小型文本文件,是由服务器发送到用户浏览器并保存在用户计算机或移动设备上的一种数据形式。以下是对Cookie的详细解释:
定义与工作原理定义:Cookie是网站在用户浏览器中创建和存储的小型文本文件,用于辨别用户身份和存储用户相关信息。工作原理:当用户访问某个网站时,服务器会在用户的浏览器中创建一个Cookie,并将其存储在用户的计算机或移动设备上。当用户再次访问该网站时,浏览器会将Cookie发送回服务器,服务器通过读取Cookie中的信息来识别用户身份或获取用户的个性化设置。
2.获取cookie的代码如下: 程序运行后会打开登录界面,然后使用的二维码登录。这样程序可以得到当前的cookie值字段,在cookie失效前无须再进行登录。
<0001>初始化浏览器的函数— browser_initial():
def browser_initial():
""""
进行浏览器初始化
"""
# os.chdir('E:\\pythonwork')
# 1.将加载项配置到启动浏览器中 打开/创建浏览器对象
browser = webdriver.Chrome(service=Service(path))
# 2.网址 https://kyfw.12306.cn/otn/resources/login.html -- 登录界面
# https://kyfw.12306.cn/otn/leftTicket/init 选票界面可以 判断是否登录
log_url = 'https://kyfw.12306.cn/otn/resources/login.html'
return log_url, browser
<0002> 获得cookie的函数— get_cookies(browser):
def get_cookies(browser):
"""
获取cookies保存至本地
"""
browser.get(log_url)
time.sleep(15) # 进行扫码
# selenium_login(browser)
# print("登录成功")
dictCookies = browser.get_cookies() # 获取list的cookies
string_Cookies = json.dumps(dictCookies) # 转换成字符串保存
with open('string_cookies.json', 'w') as f:
f.write(string_Cookies)
print('cookies保存成功!')
if __name__ == "__main__":
log_url, browser = browser_initial()
browser.get(log_url)
# 1.二维码登录 保存 -- cookie -- 用完关掉
get_cookies(browser)
运行后就会变成这样,找到二维码,让手机自动登录。
你也可以在get_cookies(browser)中修改此代码,只有自己扫了登录成功,后续出现的cookie保存成功,才是最新的cookie值。
二、cookie登录函数与自动化 – 可以实现cookie值的匹配–实现自动登录 – 无须手机验证码
1.login_cookie函数代码
代码如下(示例):
def login_cookie(log_url, browser):
"""
从本地读取cookies并刷新页面,成为已登录状态
"""
# browser.get(log_url)
with open('string_cookies.json', 'r', encoding='utf8') as f:
listCookies = json.loads(f.read())
# 往browser里添加cookies
for cookie in listCookies:
browser.add_cookie(cookie)
time