当前位置: 首页 > 科技观察

实测两款GitHub开源插件,坑都帮你踩过了

时间:2023-03-22 00:17:47 科技观察

两个GitHub开源插件实测,帮你踩过。如今,已经可以抢回过年后的火车票了。如果你对自己的手速和市面上的各种“加速包”都没有信心,何不试试用程序员来抢票呢?而且,12306官方宣布已经屏蔽了大量付费抢票软件,这意味着即使你为这些软件交了会员费,依然抢不到票。那我只能回到原来的人工抢票?不!不!不!GitHub上有两个“念经”项目。每次春运前,他们都会定期登上热榜榜首,帮助一代又一代有钱有态度的程序员和非程序员抢票回家。那么,这两个项目是如何运作的呢?这个容易用吗?与人工抢票和第三方软件抢票相比,有什么明显的优势吗?在安装和使用过程中,你会遇到莫名其妙的bug吗?今天就为大家一一点评。霸占热榜的两个项目在GitHub热榜排名第一。项目名字简单粗暴,直接叫12306,已经有21300星,来自ID为testerSunshine的作者。testerSunshine的12306项目可以自动登录用户账号,可以点击卡片抢票,还可以接送失踪的考生。抢票后会有邮件通知。热榜排名第二的是py12306,目前有8300颗星,从今年年初开始就非常火爆。抢票软件该选哪款那么综合来说,这两款开源软件哪个好用呢?py12306从去年开始就被大家广泛使用了。它的优点是设置相对简单,甚至是图形界面。但是在验证码登录过程中容易出现下载失败的情况。如果将打码接口从免费改成“若快”平台,则需要充值。如果你对运行代码一窍不通,推荐py12306。testerSunshine的12306插件设置比较复杂,自动获取cookie经常失败,需要手动填写,不如py12306;但是自带了开发者的12306图片识别模型,我们可以在本地完成图片识别码的登录过程。从实际使用的角度,我们推荐testerSunshine的12306,它目前在GitHub上的高人气也体现了用户的选择。评测详情&教程两款抢票插件的关键在于配置文件的修改:testerSunshine/12306的关键是TickerConfig.py,py12306的关键是env.py。热榜第一:12306下面开始测试12306,现在是趋势榜第一,先把工程拷贝到本地:gitclonehttps://github.com/testerSunshine/12306cd12306然后安装依赖。为了避免多python环境带来的问题,建议以root用户安装:pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simple-rrequirements.txt现在到了整个过程中最关键的部分,配置TickerConfig.py文件,这一步将决定你的成败!很重要!看到配置文件中的一长串字符,是不是很头疼?经过测试,我们发现了几个关键点:1.如果没有拿到票,希望退票后其他人来取。设置TICKET_TYPE=2,否则设置为1;#刷票模式:1=刷票2=候补+车票TICKET_TYPE=12,STATION_TRAINS可以填一系列你想抢的车次,比如北京到合肥方向,如果你想买G267和G29次车次,设置STATION_TRAINS=["G267","G29"],中间用逗号隔开,不填相当于抢了当天所有的车次;#DepartureDate(list)"2018-01-06","2018-01-07"STATION_DATES=["2020-01-30"]#填写需要的Purchasedtrips(list),"G1353"#修改规则填车次,注意:(之前设置的车次逻辑不变),如果车次填空,那么当天所有的车次都会被纳入筛选返回#不填的车次只当整个列表为空时计数。如果不为空,仍然会判断车次。这是错误的写法[""],正确的写法是[]STATION_TRAINS=["G267","G29"]3.STATION_DATES填写你的出发日期,这一步不难;4.出发站FROM_STATION和到达站TO_STATION不需要精确到具体车站,填城市即可,除非你想从具体车站出发;#出发城市,比如深圳北,填深圳就可以得到FROM_STATION="北京"#到达深圳北这样的城市,填深度TO_STATION="Hefei"是在深圳。5、旅客在自己的12306账号中填写常用联系人姓名,如TICKET_PEOPLES=["张三"],如果没有,需要登录12306手动添加;#人车人(list)多人ex:#"张三",#"李四"TICKET_PEOPLES=["李磊","韩梅梅"]6.填写您的12306账户名和密码;#12306登录账号USER="李磊"PWD="123456"7.如果不需要email和serversauce提醒,请将EMAIL_CONF和SERVER_CHAN_CONF的第一项设置为False;8、抢票开放时间根据自己的车次填写,可以提前几秒,比如下午1:00开发抢票,填写OPEN_TIME="12:29:57";#预售票发布时间,如果你是missing模式,可以忽略这个操作OPEN_TIME="12:29:57"9.Cookie设置步骤特别关键。经过我们实测,COOKIE_TYPE设置为1或2时会出现一些问题,建议设置为3;#1=使用selenium获取devicesID#2=使用网页/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可以??有问题,如果登录一直是302请改配置1#3=打开浏览器抓取headers-Cookies中的RAIL_DEVICEID和RAIL_EXPIRATION,这个不需要配置seleniumCOOKIE_TYPE=310,上一步设置为3后,需要手动设置接下来的两个参数RAIL_EXPIRATION和RAIL_DEVICEID#如果COOKIE_TYPE=3,则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值RAIL_EXPIRATION="1577327361278"RAIL_DEVICEID="jFAKbAeAInPnm0pAdqdCNG0ID_dU6SW6L8gaX7zDEewcWVJC5w7nTSw63oMK9sd9c6FcdhyDMsuVUV4aknfXwzHhO8c_Z-nLU4W8F4_gj_HlrOrsrR29U82HR4pnMRqoRFBKuCZ3tKAgQrhuYnR5RWsBCe5g7goV"#RAIL_EXPIRATION="1577034103293"#RAIL_DEVICEID="CDno29Erc_Pf3FSXb4dzq-Op64EhWrsi5yUZKVIKR1MAfYo2qFlCeXD8VkexY7_1qg-ClV-fE8j9jgVlPZxRh3wVc2iqLe_5A8sdr62qZx4B22JPF8lFCjpgTKZ5ODW90HJd5tiQsJ1KR9nOqHRxHj1FT5LEIwfw"如何找到这两个参数?先用Chrome浏览器打开12306.cn,点击网址左侧的“锁”图标:然后点击发布的Cookie。然后会出现一组cookie,选择来自12306.cn的cookie:看到RAIL_EXPIRATION和RAIL_DEVICEID这两个参数,点击它,将内容中的一串字符复制到配置文件中。需要注意的是,RAIL_DEVICEID参数很长,可能显示不完整,请完整复制。至此,所有的准备工作已经完成。在开始之前筛选CDN非常重要!python3run.pyc然后启动服务:python3run.pyr然后会提示登录成功,并列出当天所有相关车次信息,然后开始抢票:抢票成功后,本软件无法帮你完成付款后,仍需手机登录或电脑登录12306网站,并在30分钟内完成付款,否则你好不容易抢到的票就没了。第二热榜:py12306py12306的安装方法和前者类似:gitclonehttps://github.com/pjialin/py12306cdpy12306pip3install-rrequirements.txt然后修改配置文件,现在改后缀名:cpenv.py.exampleenv。默认配置文件里需要py修改的选项有:1、你的12306账号和密码;#12306账号USER_ACCOUNTS=[#目前只支持查询,不支持下单,只屏蔽下面的账号{'key':'lilei',#如果使用多了一个账号key不能重复'user_name':'Lilei','password':'123456'},2.查询任务QUERY_JOBS中的参数,包括出发日期left_dates,出发站left和到达站到达,乘客姓名成员,Seats,车次train_numbers;#查询任务QUERY_JOBS=[{#'job_name':'bj->yl',#任务名称,不填则默认以站名命名,不可重复'account_key':0,#会被使用指定账号下单'left_dates':[#出发日期:Array"2020-01-22",],'stations':{#站点支持同时查询多个站点:Dictor:List'left':'北京','到达':'合肥',},'members':[#旅客姓名,会根据当前账号自动识别旅客类型购买儿童票。只要设置两个相同的名字,程序就会自动识别如['张三','张三']“李雷”,“汉梅梅”#名字前加*表示学生买成人票#7,#支持通过流水号判断唯一乘客,运行时登录成功后可以通过pythonmain.py-t查看流水号/user/找到对应的用户名_passengers.json文件,找到对应的代码填写in],'allow_less_member':0,#是否允许部分乘客在剩余车票不足时提交'seats':[#选座有顺序:Array#可取值:特价座,商务座,头等座,二等座,软卧,硬卧,动卧,软座,硬座,无座'secondclassseat'],'train_numbers':[#筛选车次可以为空,如果为空,则所有行程都可以提交,例如[]注意大小写需要一致"G267",],'except_train_numbers':[#过滤trains,排除train_numbers和except_train_numbers不能同时存在],'period':{#Screentime'from':'00:00','to':'24:00'}},然后运行程序:python3main.py如果不擅长使用命令行方式,也可以使用图形界面观察抢票任务。在配置中开启WEB_ENABLE,启动程序后访问当前主机地址+端口号(默认8008),然后在浏览器中输入http://127.0.0.1:8008。现在,您可以让程序为您抢票了。不过,抢票软件也不是万能的,没有票难成聪明的码农。除了技术,你可能还需要一点运气。不管乘坐什么交通工具,祝大家新年快乐回家,平安回来搬砖~2020年已经开始了,量子位也祝大家新年快乐^_^传送门测试员阳光/12306https://github.com/testerSunshine/12306py12306https://github.com/pjialin/py12306