引言
每逢过年就到了12306抢票高峰期,自己总想研究一下12306购票的流程,虽然网上已经很多资料,但是总比不过自己的亲身体会,于是便琢磨着写一个抢票软件,本人比较熟悉python,所以软件是用python写的。
使用工具和库
开发环境是python3.6.2
开发工具是pycharm
辅助工具fiddler(神器)
使用到的重要库:
界面(tkinter)
http请求(requests库)
打包(pyinstaller库)
思考过程
其实本人职业并不是开发人员,任职是测试,但是喜欢平时用python写点小东西,所以开发大大们莫见笑。不废话,说说我才开始做的思考过程。
1.首先代码需要涉及前端和后台两个部分,前端我查了PyQt和Tkinter,觉得我这小东西没必要用PyQt,画个简单的前端即可,所以选择使用Tkinter
2.后台代码就是模拟12306订票流程,所以选择requests库做http请求
3.12306订票流程怎么去分解?fiddler神器帮了大忙,我就去12306官网正常登录购票,把整个流程的包全部抓到,然后分析请求数据和返回数据,后台代码就比较容易写了
4.根据后台代码的逻辑和返回,编写前端的用户提示和跳转
模拟12306购票流程
第一步登录:
在你登录12306网站的时候,网页会get一个验证码图片,这个步骤封装方法如下:
def get_img(self):
url="https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&{}".format(random.random())
response=self.session.get(url=url,headers=self.headers,cookies=Func12306.cookies, verify=False)
path = os.path.abspath('..')
with open(path+"img.jpg