欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python模拟彩云比特币网站登录以及信息的采集

程序员文章站 2024-03-16 14:26:46
...

本篇文章笔者主要是分享模拟登录的一些个人小技巧,使用session来进行会话跟踪,模拟到自己想要的网页路径通过xpath、正则、BS4等来获取自己想要的字段。

所使用的python包和工具:requests、fiddler,环境Windows系统。

第一步 登录的网站首先注册一个自己的账号,然后打开fiddler抓包工具,通过网页中登录来查看登录时候所采用的请求方式:get、post?查看所需要的登录参数。具体操作如下图所示:
python模拟彩云比特币网站登录以及信息的采集
如上图所示我们可以看到它的提交表单额外增加了很多字段,那么这些字段是从哪里来的呢?
同样的我们可以采用fiddler抓包工具 crtl+f 查找信息的方法,把这些字段复制粘贴上去查看这些字段所在的网页,把这个网页获取到。如下图所示:
python模拟彩云比特币网站登录以及信息的采集
同样的其他的字段也可以通过这个方法来查找,发现其来源,然后同过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 模拟登录