#写在前面,这个程序我已经弄出来了,但是因为黄牛泛滥以及懒人太多,整个程序的代码就不贴出来了,这里纯粹就是技术交流。
只做技术交流、、、、、
嗯,程序结束后,自己还是得手动付款。
废话不多说,下面就直接开始技术主要部分阐述。
先讲理论部分:首先我们需要代码实现一个浏览器功能,那么模块基本上可以确定urllib.parse、urllib.request,这两个包都是和网址有关的模块,那么咱们去登录一个网址,特别是有验证码这些的网址,我们登录进去是不是就行了?答案是对的,但是我们用代码实现的话,这个网址可能每次都有可能被代码去请求,那么服务器怎么知道我们是一个人,而不是多个浏览器不同的用户呢?
此时cookie就非常重要了,在代码中设置好cookie,那么对方服务器自然就知道我们是一个人,比较服务器都是这么区分的。python3中 cookie这个功能是封装在http.cookiejar这个模块之内。好了,代码如下:
# coding=utf-8# author: Jason# time:2018/1/16 20:00:00#version:1.0import urllib.request as ulimport urllib.parse as uzimport http.cookiejar as cookielibfrom json import loadsc=cookielib.LWPCookieJar()#先把cookie对象存储为cookiejar的对象cookie = ul.HTTPCookieProcessor(c)#把cookiejar对象转换为一个handleopener = ul.build_opener(cookie)#建立一个模拟浏览器,需要handle作为参数ul.install_opener(opener)#安装一个全局模拟浏览器,代表无论怎么访问都是一个浏览器操作而不是分开获取验证码等msg
好了,如此一来,我们代码的初步实现已经完成,接下来就是进入网络分析部分
首先可以使用google浏览器或者搜狗浏览器(本人用的搜狗),打开F12,也就是开发者模式,登录12306的登录地址 https://kyfw.12306.cn/otn/login/init
两个红圈中第二个是验证码来源,此时我们只需要记录这个网页(点进去)的详细情况,写入代码当中,python3中urllib.request这个模块打开既可
如此便是验证码来源,那么如何用代码捕捉呢?首先我们可以先乱输入密码,乱点验证码,然后我们直接点击登录
多了一个很奇妙的东西,此时,这里就是验证码验证的网址,那么我们是不是应该记录下来呢?很简单,到Headers里面就全都看得到了
新闻热点
疑难解答