【问题标题】:Is it possible to perform proxy chaining using python requests?是否可以使用 python 请求执行代理链接?
【发布时间】:2014-11-28 07:40:45
【问题描述】:

是否可以使用 python requests 执行代理链接?或者是否有任何外部支持来实现这一点,可能仍然使用requests

我的意思是这样的:

r = requests.get(url=url, proxies={'http': [proxy_1, ..., proxy_n]})

以便请求通过每个代理。

【问题讨论】:

标签: python proxy python-requests


【解决方案1】:

方法有很多,我用下面的一种,

import collections, requests

def ChainProxy(a,proxies,url):
    r=a
    while True:
        try:
            r=r+1
            d = collections.deque(proxies)
            d.rotate(r)
            pp = list(d)
            pp = pp[0]
            stuff = requests.get(url, proxies={'http': 'http://'+pp}).content
            break
        except:
            pass
    return (r,stuff)

你使用它的方式,

proxies = [a,b,c]
r=0

#And then repeat this everytime,
r,stuff=ChainProxy(r,proxies,url)

这每次都会为您提供一个新的r,并为您提供stuff的页面源

我已经实现了tryexcept,因为我总是使用免费代理,其中许多都不起作用 :-) 如果您信任您的代理,您可以跳过这一步。

希望有所帮助:-)

【讨论】:

  • 这不是我所说的“代理链”。在这里,您只是在尝试代理列表并在第一次成功时返回。我想要实现的是执行通过多个代理的请求:A --> proxy1 --> ... proxyN --> B.
  • @se7entyse7en 它不会只使用第一个有效的代理。但它会在每次调用函数时轮换代理。我不明白你到底需要什么。你能说得更具体点吗?
  • 请使用描述性变量名
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2013-05-26
相关资源
最近更新 更多