miicha/php-proxy
此包最新版本(4.0.2)没有提供许可证信息。
4.0.2
2016-06-18 20:02 UTC
Requires
- ext-curl: *
- symfony/event-dispatcher: ~2.6
Suggests
- predis/predis: For caching purposes
This package is not auto-updated.
Last update: 2024-09-29 03:15:28 UTC
README
基于PHP、Symfony和cURL构建的代理脚本。此库借鉴了Glype、Jenssegers代理和Guzzle的思路。
PHP-Proxy网络应用程序
如果您正在寻找一个作为Web应用程序(类似于Glype)的项目版本,请访问 php-proxy-app
查看此php-proxy的实际效果:UnblockVideos.com
安装
使用 Composer 安装
composer require athlon1600/php-proxy
示例
require('vendor/autoload.php'); use Proxy\Http\Request; use Proxy\Proxy; $request = Request::createFromGlobals(); $proxy = new Proxy(); $proxy->getEventDispatcher()->addListener('request.before_send', function($event){ $event['request']->headers->set('X-Forwarded-For', 'php-proxy'); }); $proxy->getEventDispatcher()->addListener('request.sent', function($event){ if($event['response']->getStatusCode() != 200){ die("Bad status code!"); } }); $proxy->getEventDispatcher()->addListener('request.complete', function($event){ $content = $event['response']->getContent(); $content .= '<!-- via php-proxy -->'; $event['response']->setContent($content); }); $response = $proxy->forward($request, "http://www.yahoo.com"); // send the response back to the client $response->send();
插件示例
namespace Proxy\Plugin; use Proxy\Plugin\AbstractPlugin; use Proxy\Event\ProxyEvent; use Proxy\Html; class MultiSiteMatchPlugin extends AbstractPlugin { // Matches multiple domain names (abc.com, abc.de, abc.pl) using regex (you MUST use / character) protected $url_pattern = '/^abc\.(com|de|pl)$/is'; // Matches a single domain name //protected $url_pattern = 'abc.com'; public function onCompleted(ProxyEvent $event){ $response = $event['response']; $html = $response->getContent(); // do your stuff here... $response->setContent($html); } }
请注意,在 $url_pattern
中必须使用 / 字符进行正则表达式匹配