这里的简单模拟用户登录指的是不考虑验证码等除表单之外的信息
用python实现登录与java类似,步骤如下
1:通过工具找到登录页面的真实url
2:分析需要提交的数据(这里不考虑除表单之外的信息)
3:构建post请求信息
4:设置cookie
5:提交请求
这里模拟的是chinaunix的登录
首先实际登陆一次,用fidder得到post表单提交时候的真实url如下
http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LB6kU
通过分析表格,需要提交的psot表单只有
username和password两项
url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LB6kU" postdata = urllib.parse.urlencode({ "username":"15637142735", "password":"f43312626" }).encode("UTF-8")这里需要先用urlencode处理成a=b这种键值对的形式,同时可以对中文进行处理
req = urllib.request.Request(url,postdata) req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") cjar = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar)) urllib.request.install_opener(opener)构建cookie处理器
data = urllib.request.urlopen(req).read() text = data.decode("gbk","ignore") file = open("f:\\login.html","w") file.write(text) url2 = "http://bbs.chinaunix.net/" req2 = urllib.request.Request(url2,postdata) req2.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") data = urllib.request.urlopen(req2).read() file = open("f:\\log2.html","wb") file.write(data) file.close()打开网页
如果不使用cookie,访问log2.html的时候会显示未登录状态
关于cookie的理解请参考我的web学习笔记中关于cookie的描述