写在前面
一年一度的春运已经悄然来临,不知道身在异乡的你是否抢到一张回家的火车票
又有多少人因为一张小小的火车票而不能回家过春节。漂泊在外的游子在这个时候的乡愁就是一张小小的火车票
近日在朋友圈被一波抢票加速包疯狂刷屏了
小编在群里看得干着急,现在市面上各种平台的抢票软件都是收费的的,而且不能保证百分百能抢到票,很多小伙伴甚至被一些钓鱼网站骗钱了。这不是得不偿失了嘛。
作为一个技术控,我喜欢通过自己的技术去解决问题,下面小编将制作一个12306抢票软件,实现自动抢票,一起期待吧~
代码编写
1、程序效果图
没错,抢到票之后还是需要手动付款的,这个对大家来说还是轻轻松松的吧~
废话不多说,下面就直接开始技术主要部分阐述。
2、主要代码及调试
理论部分:首先我们需要代码实现一个浏览器功能,那么模块基本上可以确定urllib.parse、urllib.request,这两个包都是和网址有关的模块,那么咱们去登录一个网址,特别是有验证码这些的网址,我们登录进去是不是就行了?答案是对的,但是我们用代码实现的话,这个网址可能每次都有可能被代码去请求,那么服务器怎么知道我们是一个人,而不是多个浏览器不同的用户呢?
此时cookie就非常重要了,在代码中设置好cookie,那么对方服务器自然就知道我们是一个人,比较服务器都是这么区分的。python3中 cookie这个功能是封装在http.cookiejar这个模块之内。好了,代码如下:
# coding=utf-8 # author: Jason # time:2018/1/16 20:00:00 #version:1.0 import urllib.request as ul import urllib.parse as uz import http.cookiejar as cookielib from json import loads c=cookielib.LWPCookieJar()#先把cookie对象存储为cookiejar的对象 cookie = ul.HTTPCookieProcessor(c)#把cookiejar对象转换为一个handle opener = ul.build_opener(cookie)#建立一个模拟浏览器,需要handle作为参数 ul.install_opener(opener)#安装一个全局模拟浏览器,代表无论怎么访问都是一个浏览器操作而不是分开获取验证码等msg
接下来就是进入网络分析部分
首先可以使用google浏览器或者搜狗浏览器(本人用的搜狗),打开F12,也就是开发者模式,登录12306的登录地址https://kyfw.12306.cn