簡體   English   中英

通過代理進行身份驗證的urllib2 http請求

[英]urllib2 http request with authentication via proxy

我了解通過身份驗證從http獲取資源的最流行方法是使用以下代碼。

import urllib2, base64

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n',   '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)

我的問題是是否需要設置代理,應該在上面的代碼塊中添加什么代碼? 我嘗試了下面的方法,但是沒有用。 錯誤消息是urllib2.URLError:

<urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>

這是代碼:

import urllib2
import base64


proxy_id = "ididid"
proxy_pw = "password"
proxyhandler = urllib2.ProxyHandler({"http":"http://"+proxy_id+":"+proxy_pw+"@proxy:8080"})
opener = urllib2.build_opener(proxyhandler)
urllib2.install_opener(opener)


request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n',   '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)  

如果您的代理服務器要求您使用用戶/通過身份驗證,則應使用ProxyBasicAuthHandler

import urllib2
import base64


proxy_id = "ididid"
proxy_pw = "password"

proxy_handler = urllib2.ProxyHandler({'http': 'http://proxy:8080'})
proxy_auth_handler = urllib2.ProxyBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', proxy_id, proxy_pw)

opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
urllib2.install_opener(opener)

request = urllib2.Request("http://api.foursquare.com/v1/user")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n',   '')
request.add_header("Authorization", "Basic %s" % base64string)   
result = urllib2.urlopen(request)  

對不起,這個問題。 該代碼是完全正確的。 我使用了錯誤的代理HTTP,因此導致了所有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM