python2 urllib2 重定向模拟学校图书馆用户登录(一)

来源:互联网 发布:知乎钓鱼岛问题 编辑:程序博客网 时间:2024/06/07 23:35

之前的两篇文章,分别介绍了利用requests库进行登录和urllib2解决重定向的问题。

由于urllib2在处理重定向会丢失cookie,在这里利用这个MyHTTPRedirectHandlerclass可以解决该问题。

再次进行学校图书馆登录模拟(浏览器请求为post和get)

这里我们先进行利用重定向一次登录,只需要提交一次post请求,即可输出登录成功的页面。用户登录的图片在requests登录的地方就可以看到,这里就不写了,在那篇文章中指出了302返回的cookie在第二次get请求中是非常重要的。这个cookie是需要在请求的头部带上的。

import urllib2# 由于urllib重定向不带cookie,这里定义的class带cookie,使得重定向返回正确页面# https://stackoverflow.com/questions/554446/how-do-i-prevent-pythons-urllib2-from-following-a-redirecturl = "http://210.32.205.60/login.aspx"header = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","Connection":"keep-alive","Content-Type":"application/x-www-form-urlencoded","Host":"210.32.205.60","Referer":"http://210.32.205.60/login.aspx","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:54.0) Gecko/20100101 Firefox/54.0"}body = b'__VIEWSTATE=%2FwEPDwUILTE0Mjc2MjEPZBYCAgMPZBYCAg8PDxYCHgdWaXNpYmxlaGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBQxJbWFnZUJ1dHRvbjEFDEltYWdlQnV0dG9uMtIIHXEj%2BaKpKEuN3WBMS5An9yfKLqy76FI5Cs0ie1No&__VIEWSTATEGENERATOR=C2EE9ABB&__EVENTVALIDATION=%2FwEdAAbAeS%2BByzNg%2FXW9jIKItJSsl0eOxoEPS0IDqf0EHRx3vxEghZBVv0boc2NaC2%2FzVFQdp1z%2BnYWZ%2BpirZkxjR3dz6ZACrx5RZnllKSerU%2BIuKmLNV%2B2mZgnOAlNG5DVTg1uHvSo3x4u7p65TqmriJkDgirf2cB43UeZMqMyeVeS88Q%3D%3D&DropDownList1=0&TextBox1=读者号&TextBox2=密码&ImageButton1.x=44&ImageButton1.y=12'class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):    def http_error_302(self, req, fp, code, msg, headers):        print "Cookie manipulation Right Here"        return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)    http_error_301 = http_error_303 = http_error_307 = http_error_302cookieprocessor = urllib2.HTTPCookieProcessor()opener = urllib2.build_opener(MyHTTPRedirectHandler, cookieprocessor)urllib2.install_opener(opener)request = urllib2.Request(url, headers=header, data=body)response =urllib2.urlopen(request)print response.read()print cookieprocessor.cookiejar   # 输出重定向返回头部中的的cookie


原创粉丝点击