x14 / proxy-checker
dev-master
2024-02-24 16:42 UTC
Requires
- php: ^7.2.5 || ^8.0
- guzzlehttp/guzzle: ^6.5
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8
This package is not auto-updated.
Last update: 2024-09-22 17:44:43 UTC
README
Proxy Checker 是一个 PHP 库,允许您快速检查代理列表。
- 快速(异步请求的功劳)
- 简单(基于 PSR-7)
- 支持多种协议
- 可定制(完全控制请求/响应检查)
安装
composer require retrowaver/proxy-checker
工作原理?
ProxyChecker
构造函数接受 2 个必填参数
- 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 客户端发送请求的 Guzzle 请求选项。目前只有一个默认值:'timeout' => 20
支持的协议
PHP Proxy Checker 应该与 http、https、socks4、socks4a、socks5 和 socks5h 代理一起工作(有关描述,请参阅 https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html)。