在分布式爬网程序中使用IP身份验证代理

时间:2013-04-23 16:29:08

标签: python proxy web-crawler

我正在使用运行在CentOS 6.3服务器群集上的Python中的分布式网络爬虫,爬虫使用来自不同代理提供商的许多代理。一切都像用户名/密码认证代理提供商的魅力。但是现在我们已经购买了一些使用基于IP的身份验证的代理,这意味着当我想使用其中一个代理抓取到网页时,我需要从我们服务器的一个子集发出请求。

问题是,Python(使用库/软件)是否有办法向通过2个代理的域发出请求? (一个代理是需要用于IP身份验证的子集之一,第二个是来自提供者的实际代理)或者是否有其他方法可以在不将我们的服务器子集设置为代理的情况下执行此操作?

我现在用来通过代理发出请求的代码使用了请求库:

import requests
from requests.auth import HTTPProxyAuth

proxy_obj = {
    'http':proxy['ip']
}

auth = HTTPProxyAuth(proxy['username'], proxy['password')

data = requests.get(url, proxies = proxy_obj, auth = auth)

提前致谢!

1 个答案:

答案 0 :(得分:0)

  

Python中是否有一种方法(使用库/软件)来发出请求   通过2代理的域名?

如果您需要通过两个代理,看起来您将不得不使用HTTP tunneling,因此任何不在授权列表中的主机都必须在其中一个上连接HTTP代理服务器。主机是,并使用HTTP CONNECT方法创建到远程代理的隧道,但可能无法使用requests库实现此目的。

  

或者是否有其他方法可以在不设置此子集的情况下执行此操作   我们的服务器作为代理?

假设使用基于IP地址的身份验证的远程代理都希望使用相同的IP地址,那么您可以在群集和远程代理之间配置NAT路由器,以转换所有出站的HTTP请求。单个IP地址。

但是,在您考虑实施这些不必要的复杂选项之前,并且考虑到您要为此服务付费,您不能只是要求提供商允许您对整个IP地址范围的请求吗?目前正在使用?