随机选择一个简单的包装器请求

pyproxyroulette的Python项目详细描述


Pyproxy轮盘赌

pyproxyroulette库是Requests库的包装器。包装器将随机代理应用于每个请求,并确保代理正常工作,并在需要时交换它。另外,包装器会尝试检测请求是否被请求的web主机阻止。阻塞的请求在不同的代理服务器上重复。包装器可用于多线程应用程序,如爬虫程序或爬虫程序。在

安装

这个库在pypi上可用。因此,它可以安装如下:

pip install pyproxyroulette

包装器用法示例

^{pr2}$

来自请求库的函数getpostoptionputdelete和{}通过包装器包装和调用。 通常,只建议调用和使用幂等方法作为服务器可以注册超时的请求,尽管客户端没有及时注册。因此,只建议在生产环境中使用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)
ParameterDefaultDescription
debug_modeFalseWhen activated, it prints additional internal information used for debugging
max_retries5Number of retries with different proxies when a request fails. Set to 0 for unlimited retries.
max_timeout15Timeout until a request is assumed to have failed
func_proxy_validatordefaults.proxy_is_working()Function, that can check if a specific (ip,port) combination is valid and working
func_proxy_response_validatordefaults.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”的名称将阻止包装器将代理应用于请求。

免责声明

本软件按“原样”提供,不接受任何明示或暗示的保证,包括但不限于适销性和适用于特定用途的默示保证。在任何情况下,出资人对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代货物或服务;使用、数据或利润损失;或业务中断)不承担任何责任,无论是在合同中还是在严格责任中,或因使用本软件而产生的任何侵权行为(包括疏忽或其他),即使被告知存在此类损害的可能性。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java创建猜谜游戏程序   JavaWebSocketContainer。connectToServer似乎挂起了   如何在java中中断函数   java c#socket client multiple BeginSend()未到达服务器   不可见的组件然后在Java中的窗格之间切换   java在应用程序类中使用静态接口安全吗?   java等待函数完成,直到回调到来   使用DataOutputStream时的java新行,Android   java服务对象的定义是什么?   基于视图的javahibernate复合密钥   java将varchar连接到char在JPA(oracle)中不起作用   如何在java中通过point类读取多个点?