python模拟彩云比特币网站登录以及信息的采集
本篇文章笔者主要是分享模拟登录的一些个人小技巧,使用session来进行会话跟踪,模拟到自己想要的网页路径通过xpath、正则、BS4等来获取自己想要的字段。
所使用的python包和工具:requests、fiddler,环境Windows系统。
第一步 登录的网站首先注册一个自己的账号,然后打开fiddler抓包工具,通过网页中登录来查看登录时候所采用的请求方式:get、post?查看所需要的登录参数。具体操作如下图所示:
如上图所示我们可以看到它的提交表单额外增加了很多字段,那么这些字段是从哪里来的呢?
同样的我们可以采用fiddler抓包工具 crtl+f 查找信息的方法,把这些字段复制粘贴上去查看这些字段所在的网页,把这个网页获取到。如下图所示:
同样的其他的字段也可以通过这个方法来查找,发现其来源,然后同过requests来请求这些网站通过xpath来进行匹配拿到这些字段。
同样的需要注意一个问题?如果仅仅拿到这些字段,在运用requests来进行访问可能会登录不进去,为什么呢?这个时候你就需要考虑网页中的设置cookies的问题了,那么你必须查看首页设置cookies了吗?(笔者分享一个小技巧可以通过fiddler查找set-cookies来查看到底是哪一个网页第一次设置了cookies)可以查看其响应的结果,本网页的结果如下图所示;
显然这个网页在这一页就设置了cookies,那么我们就需要利用session来进行会话跟踪,进行登录。登录进去自己就可以拿取自己想要的信息网页(全程session会话跟踪),部分代码如下(有兴趣的可以尝试,忽略代码的不规范性):
# 登陆提取信息的路径
infos_url = 'https://www.cybtc.com/member.php?mod=logging&action=login'
infos_headers = {
'Host': 'www.cybtc.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
}
# 使用session来进行会话跟踪
res = requests.session()
infos_res = res.get(url=infos_url,headers=infos_headers)
infos_res = infos_res.content.decode('utf-8')
infos_res = etree.HTML(infos_res)
# 表单提交所需要的信息
formhash = infos_res.xpath('//input[@name="formhash"]/@value')[0]
referer = infos_res.xpath('//input[@name="referer"]/@value')[0]
loginfield = infos_res.xpath('//select[@name="loginfield"]//option/@value')[0]
# 表单提交信息的路径
login_url = 'https://www.cybtc.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LimPC&inajax=1'
login_headers = {
'Host':'www.cybtc.com',
'Origin':'https://www.cybtc.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
'Referer':'https://www.cybtc.com/member.php?mod=logging&action=login',
}
login_data = {
'formhash':formhash,
'referer':referer,
'loginfield':'username',
'username':'自己账号',
'password':'md5加密过后的密码',
'questionid':'0',
'answer':'',
}
login_res = res.post(url=login_url,headers=login_headers,data=login_data)
# 登陆成功过后进行页面的提取
到这里本文模拟登录的整个过程就结束了,笔者认为这类模拟登录的网站属于简单的一类,当然很多登录的网站都是这类套路。后续再笔者的学习中会分享更多的实用性东西。当然你也可以通过python+Selenium+chromedriver来进行登录,后续会分享一篇。
下一篇: python scrapy 登录知乎过程