2023年12306购票平台自动化购票一|解决登录问题

目录

一、说明

1.1、背景

1.2、说明

二、步骤

2.1、打开12306网址

2.2、输入账号与密码

2.3、点击立即登录

2.4、拖动滑块认证

三、结果

3.1、运行结果

四、本次小节


一、说明

1.1、背景

又到了一年一度的春运时间,但总是抢不到票,让人烦躁。本次通过解决12306购票平台的登录问题,一步步完成12306自动化购票程序,以下内容为第一部分。

1.2、说明

操作系统:win 10

编辑器:pycharm edu

语言及版本:python 3.10

使用的库:selenium

实现思路:使用selenium模拟人的行为,进行自动化登录

识别图片验证码:超级鹰

浏览器下载与驱动的安装:Firefox下载与驱动安装

浏览器闪退说明:大概率是因为下载的浏览器和浏览器驱动版本不一致,建议使用搜索引擎查找大佬分享的内容解决

以下url不会放真实的,拿来测试注意识别并自行更改。

二、步骤

2.1、打开12306网址

driver = Firefox()
driver.get('请求的url')

2.2、输入账号与密码


driver.find_element(By.XPATH, '//*[@id="J-userName"]').send_keys('123456')
driver.find_element(By.XPATH, '//*[@id="J-password"]').send_keys('123456')

2.3、点击立即登录

driver.find_element(By.XPATH, '//*[@id="J-login"]').click()

2.4、拖动滑块认证

问题:

12306会进行反爬,检测selenium启动的浏览器webdriver是否为True,如果是的话,无论怎么拖动都会显示在来一次。

解决办法:

在查了很多资料后(网上大多是使用Chrome浏览器,火狐的很少,找得很艰难),找到了解决办法,在请求到url之后,进行一次前端的反弹,把webdriver设置为false即可。

script = 'Object.defineProperty(navigator,"webdriver",{get:()=>false,});'
driver.execute_script(script)

push_btu = driver.find_element(By.XPATH, '/html/body/div[1]/div[4]/div[2]/div[2]/div/div/div[2]/div/div[1]/div[2]/span')
ActionChains(driver).drag_and_drop_by_offset(push_btu, 500, 0).perform()

运行代码后,在控制台查看,结果为:

三、结果

3.1、运行结果

出现上图,说明已经成功登录,接下来就可以进行查票,购票的准备了。

四、本次小节

2023年,12306登录时,竟然不需要图片验证码了,准备的识别验证码没用上,但这也方便了许多。

本次自动化登录需要掌握的知识如下:

1)事件链;

2)selenium基本控件的使用、如点击、输入、拖动滑动条等。

        以上内容是购票的第一部分,由于时间关系,之后会有直到完全实现自动购票的系列内容,完整源代码会在完全实现自动化购票时放出,欢迎进行批评指正。

猜你喜欢

转载自blog.csdn.net/qq_57663276/article/details/128493008