随机选择一个简单的包装器请求
pyproxyroulette的Python项目详细描述
Pyproxy轮盘赌
pyproxyroulette库是Requests库的包装器。包装器将随机代理应用于每个请求,并确保代理正常工作,并在需要时交换它。另外,包装器会尝试检测请求是否被请求的web主机阻止。阻塞的请求在不同的代理服务器上重复。包装器可用于多线程应用程序,如爬虫程序或爬虫程序。在
安装
这个库在pypi上可用。因此,它可以安装如下:
pip install pyproxyroulette
包装器用法示例
^{pr2}$来自请求库的函数get
、post
、option
、put
、delete
和{GET
方法。在
初始化参数
pr=ProxyRoulette(debug_mode=False,max_retries=5,max_timeout=15,func_proxy_validator=defaults.proxy_is_working,func_proxy_response_validator=defaults.proxy_response_validator)
Parameter | Default | Description |
---|---|---|
debug_mode | False | When activated, it prints additional internal information used for debugging |
max_retries | 5 | Number of retries with different proxies when a request fails. Set to 0 for unlimited retries. |
max_timeout | 15 | Timeout until a request is assumed to have failed |
func_proxy_validator | defaults.proxy_is_working() | Function, that can check if a specific (ip,port) combination is valid and working |
func_proxy_response_validator | defaults.proxy_response_validator() | Function, which checks if a request has been blocked by inspecting the response. A blocked request will lead to repetition of the request using a different proxy |
扩展代理池
可以向系统中添加函数,这些函数是定期调用的,并返回要在代理轮盘赌中使用的IP、端口对。 代理池更新函数必须返回IP端口元组的列表。如果没有,则使用默认函数填充代理池 定义了显式函数。可以使用以下修饰符添加多个函数:
frompyproxyrouletteimportProxyRoulette@ProxyRoulette.proxy_pool_updaterdefmy_cool_proxy_obtaining_function():return[("172.0.0.1",80),...]pr=ProxyRoulette()pr.get("http://some.url")
装饰器用法示例
警告:仅对单线程应用程序使用修饰符
importrequestsfrompyproxyrouletteimportProxyRoulettepr=ProxyRoulette()@pr.proxify()deffoo_bar():requests.get("http://github.com")
使用函数声明上方的@pr.proxify()
修饰符,将对该特定函数中请求库发出的所有请求应用pyproxyroulette。通常的函数pr.get(...)
也可以代替decorator。在
当decorator检测到多个线程中使用beeing时,它将引发一个异常,因为这种行为是危险的。通过设置pr.acknowledge_decorator_restrictions = True
,可以完全禁用该异常。默认情况下,该值设置为False。在
警告:仅当应用程序在一个线程中使用请求库,并且请求库在函数中被称为requests
时,才使用修饰符。为库使用不同于“requests”的名称将阻止包装器将代理应用于请求。
免责声明
本软件按“原样”提供,不接受任何明示或暗示的保证,包括但不限于适销性和适用于特定用途的默示保证。在任何情况下,出资人对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代货物或服务;使用、数据或利润损失;或业务中断)不承担任何责任,无论是在合同中还是在严格责任中,或因使用本软件而产生的任何侵权行为(包括疏忽或其他),即使被告知存在此类损害的可能性。在
- 项目
标签: