headers的一些屬性
User-Agent : 有些服務器或 Proxy 會通過該值來判斷是否是瀏覽器發(fā)出的請求
Content-Type : 在使用 REST 接口時,服務器會檢查該值右冻,用來確定 HTTP Body 中的內容該怎樣解析箱靴。
application/xml : 在 XML RPC腺逛,如 RESTful/SOAP 調用時使用
application/json : 在 JSON RPC 調用時使用application/x-www-form-urlencoded : 瀏覽器提交 Web 表單時使用在使用服務器提供的 RESTful 或 SOAP 服務時, Content-Type 設置錯誤會導致服務器拒絕服務
引入庫
import urllib2
import urllib
post
#post
#參數(shù)
values = {"username":"123","password":"123"}
#編碼
data = urllib.urlencode(values)
#api
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
#請求
request = urllib2.Request(url,data)
#響應
response = urllib2.urlopen(request)
print response.read()
get
#get
values = {}
values["username"] = "123"
values["password"] = "123"
data = urllib.urlencode(values)
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
geturl = url + "?" +data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()
print geturl
打開谷歌瀏覽器調試command+shift+c
設置Headers
# api
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
# user agent
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5)"
# header
headers = {"User-Agent":user_agent}
# parameter
values = {"username":"123","password":"123"}
data = urllib.urlencode(values)
request = urllib2.Request(url,data,headers)
response = urllib2.urlopen(request)
print response.read()
應付防盜鏈
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' ,
'Referer':'http://www.zhihu.com/articles' }
Proxy(代理)的設置
import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http" : 'http://some-proxy.com:8080'})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
Timeout 設置
如果沒有data
import urllib2
response = urllib2.urlopen('http://www.baidu.com', timeout=10)
如果有data
import urllib2
response = urllib2.urlopen('http://www.baidu.com',data, 10)
使用DebugLog
import urllib2
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)
response = urllib2.urlopen('http://www.baidu.com')