retrowaver / proxy-checker
Proxy Checker 是一个PHP库,允许您快速检查代理列表。
1.0.0
2020-02-06 16:40 UTC
Requires
- php: ^7.2.5
- guzzlehttp/guzzle: ^6.5
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-07 03:23:48 UTC
README
Proxy Checker 是一个PHP库,允许您快速检查代理列表。
- 快速(得益于异步请求)
- 简单(基于PSR-7)
- 支持多种协议
- 可定制(完全控制请求/响应检查)
安装
composer require retrowaver/proxy-checker
它是如何工作的?
ProxyChecker
构造函数接受两个必填参数
- PSR-7 请求
- 实现
ResponseCheckerInterface
的对象
当调用 checkProxies()
时,它尝试使用每个代理发送该请求,然后调用提供的 ResponseCheckerInterface
实现的 checkResponse()
,最终决定代理是否有效。
根据您想要多少控制,您可以使用内置的 ResponseCheckerBuilder
快速开始(见下文)或创建一个自定义类。
1. 基本用法
步骤 1. 创建代理数组
手动创建代理数组
use Retrowaver\ProxyChecker\Entity\Proxy; $proxies = [ (new Proxy) ->setIp('127.0.0.1') ->setPort(1080) ->setProtocol('http'), (new Proxy) ->setIp('192.168.1.1') ->setPort(8080) ->setProtocol('http') ];
... 或者使用内置的简单导入器
use Retrowaver\ProxyChecker\Import\SimpleImporter; $importer = new SimpleImporter; $lines = file('path-to-file-with-proxies.txt'); // ip:port format $proxies = $importer->import($lines, 'http');
步骤 2. 准备请求
准备要使用代理发送的PSR-7请求。
use GuzzleHttp\Psr7\Request; $request = new Request('GET', 'http://example.com');
步骤 3. 准备 ResponseChecker
您可以使用内置的 ResponseCheckerBuilder
use Retrowaver\ProxyChecker\ResponseChecker\ResponseCheckerBuilder; $responseChecker = (new ResponseCheckerBuilder) ->bodyContains('some string on target website') ;
或编写自定义的 ResponseCheckerInterface
实现
use Psr\Http\Message\ResponseInterface; use Retrowaver\ProxyChecker\Entity\ProxyInterface; class CustomResponseChecker implements ResponseCheckerInterface { public function checkResponse( ResponseInterface $response, ProxyInterface $proxy ): bool { if (...) { // proxy not valid return false; } // valid proxy return true; } }
$responseChecker = new CustomResponseChecker;
步骤 4. 创建 ProxyChecker 并检查代理
use Retrowaver\ProxyChecker\ProxyChecker; $proxyChecker = new ProxyChecker($request, $responseChecker); $validProxies = $proxyChecker->checkProxies($proxies);
2. 其他信息
选项参考
ProxyChecker
接受可选参数 $options
和 $requestOptions
$options
concurrency
- 最大并发请求(默认50)
$requestOptions
是传递给Guzzle客户端的请求选项,用于发送请求。目前只有一个默认值:'timeout' => 20
支持的协议
PHP Proxy Checker 应该与 http、https、socks4、socks4a、socks5 和 socks5h 代理一起工作(有关描述,请参阅 https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)。