前言
- 你有没有想过,当我们在某个网站上登陆时,网站是如何通过验证的,我们都提交给了网站哪些信息,浏览器都发起了哪些请求?
下图是某个网站的登陆界面,接下来就让我们通过命令行模拟浏览器实现登陆操作,看看一个简单的登陆操作,具体是如何实现的。
首先,我们先来明确登陆该网站的所有步骤:
载入需要的工具包
import requests
import time
from io import BytesIO
from PIL import Image
import re
from lxml import etree
初始化信息
- 这里我们定义了发起http请求需要用的请求头、cookie、发起验证需要用到的表单数据、以及需要请求的URL。你也可以不使用请求头,但这样会使我们发出去的请求带有明显的
python-requests
字样,使服务器一眼就能识别我们是爬虫程序。为了更加完美的模拟浏览器,我们不妨多写几行代码。 - 当然,考虑到隐私方面的问题,有些数据已经被我隐去了。
# http请求头
header = {
"accept":"*text()")
登陆子网站
- 接下来我们将尝试获取子网站(只有通过登陆才能查看)的信息,怎样验证我们成功获取了子网站页面呢?
- 首先,我在子网站收藏了几份数据(如下图),名称
myCollection**
都是我自己取的。
- 获取子网站,通过正则匹配看看我们收藏的数据是否都在输出列表中!当然这里也可以对收藏的数据进行进一步的操作,我这里就不详述了。
subsite_html = s.get(subsite_url)
re.compile("myCollection\\d+").findall(subsite_html.text)
退出登陆
- 退出登录其实也很简单,只要请求一次
logout_url
网址就可以了。此时我们再去请求子网站就不能获得收藏的信息了,而是被跳转到登陆页面。最后,不要忘记关闭hui’hsession。
s.get(logout_url)
s.close()
结语
- 至此,我们“使用python模拟浏览器实现登陆”的任务总算结束了,登陆验证程序更加复杂的网站也是可以的,不过就是更加细腻的网络流量分析和更加精心的模拟浏览器罢了。
- 大家有好的建议或意见,欢迎留言或与我联系。
本帖仅供学习交流,请勿用于其它用途。