2015-09-19 629 views
2

我知道這個問題是問這裏Scrapy ERROR: Error downloading - Could not open CONNECT tunnelScrapy錯誤:錯誤下載<GET>無法打開CONNECT隧道

但我沒有找到解決辦法,因爲我沒有足夠的聲譽,我不能評論有求爲了回答。

因此,這裏是我的settings.py文件代碼

DOWNLOADER_MIDDLEWARES = { 
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, 
'clientemails.middlewares.ProxyMiddleware': 100, 
} 


PROXIES = [{'ip_port': '74.118.91.233:8080', 'user_pass': ''}, 
      {'ip_port': '83.222.222.137:8080', 'user_pass': ''}, 
      {'ip_port': '197.89.196.48:8080', 'user_pass': ''}, 
      {'ip_port': '112.96.29.187:80', 'user_pass': ''}, 
      {'ip_port': '202.194.101.150:80', 'user_pass': ''}, 
      {'ip_port': '213.85.92.10:80', 'user_pass': ''}, 
      {'ip_port': '221.208.194.108:80', 'user_pass': ''}, 
      {'ip_port': '190.63.140.71:80', 'user_pass': ''}, 
      {'ip_port': '223.19.196.232:80', 'user_pass': ''}, 
      {'ip_port': '195.71.127.224:80', 'user_pass': ''},] 

,當我運行BOT我得到這個錯誤middlewares.py有這樣的代碼

import base64 
import random 
from settings import PROXIES 

class ProxyMiddleware(object): 
    def process_request(self, request, spider): 
     proxy = random.choice(PROXIES) 
     if proxy['user_pass'] is not None: 
      request.meta['proxy'] = "http://%s" % proxy['ip_port'] 
      encoded_user_pass = base64.encodestring(proxy['user_pass']) 
      request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass    
     else: 
      request.meta['proxy'] = "http://%s" % proxy['ip_port'] 

Could not open CONNECT tunnel. 

任何幫助,將不勝感激。

+0

您也可以運行到一個問題,用'base64.encodestring'與'base64.encode' –

回答

0

而是通過你的代理授權的頭,嘗試格式化您的要求是這樣,而不是:

request.meta['proxy'] = "http://{}:{}@{}:{}".format(user,pass,'127.0.0.1','8118') 
相關問題