🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1. 支持 http/https 2. 支持HTTP 1.1的 Keep-Alive特性,能够在同一个socket连接里使用并发的httprequest 3. 支持授权 4. 支持Cache 5. 提供所有HTTP支持的方法,不只是GET和POST,还包括DELETE,CONNECT吧 6. 自动通过”GET“方法,重定向3XX返回值 7. 支持deflate和gzip两种资源压缩格式 ### 使用httplib2 浏览网页 ~~~ #!/usr/bin/env python #coding=utf-8 import urllib import httplib2 http = httplib2.Http() url="http://uliweb.clkg.org/login" response,content=http.request(url,'GET') print content ~~~ ### 提交数据 ~~~ #!/usr/bin/env python #coding=utf-8 import urllib import httplib2 http = httplib2.Http() url="http://uliweb.xxx.xxx.com/new_topic" body={'title':'test'} headers= {'Content-type':'application/x-www-form-urlencoded'} response,content=http.request(url,'POST',headers=headers,body=urllib.urlencode(body)) print content ~~~ 要求:网址是带有能提交内容的网址, body是网址的源代码带有 input或者textarea等表单。 例如: ### 一般登录方式 我们可以利用POST的特性来模拟登录到网站。 ~~~ #!/usr/bin/env python #coding=utf-8 import urllib import httplib2 http = httplib2.Http() url="http://uliweb.clkg.org/login" body={'username':'python','password':'python','rememberme':"True"} headers={'Content-type':'application/x-www-form-urlencoded', "Connection": "Keep-Alive", "cache-control":"no-cache", } response,content = http.request(url,'POST',headers=headers,body=urllib.urlencode(body)) headers['Cookie']= response['set-cookie'] url='http://uliweb.clkg.org/forum' response,content=http.request(url,'GET',headers=headers) ~~~ 1. 获取注册页面地址; 2. 将注册提交的内容写到body里面,作为'POST'的参数; 这种方式适合在非防范登录方式可以使用。 uliweb添加了 CSRF(非法入侵,交叉站点访问)。 因此我们需要以下代码来访问uliweb的登录: ~~~ #!/usr/bin/env python #coding=utf-8 import urllib import httplib2 http = httplib2.Http() url="http://uliweb.clkg.org/login" body={'username':'python','password':'python','rememberme':"True"} headers={'Content-type':'application/x-www-form-urlencoded', "Connection": "Keep-Alive", "cache-control":"no-cache", } response,content = http.request(url,'GET') csrf_val = content.split('csrf_token" value="')[1].split('">')[0] body['csrf_token'] = csrf_val headers['Cookie']= response['set-cookie'] response,content = http.request(url,'POST',headers=headers,body=urllib.urlencode(body)) url='http://uliweb.clkg.org/forum' response,content=http.request(url,'GET',headers=headers) print content ~~~ 1. 我们先下载login页面 2. 获取csrf token代码 3. 在POST的时候将csrf_token代码发送给服务器