如何使用 php 脚本制作代理?
Posted
技术标签:
【中文标题】如何使用 php 脚本制作代理?【英文标题】:How to make a proxy using a php script? 【发布时间】:2011-04-04 13:38:20 【问题描述】:假设我有一个带有专用 ip 的 vps 主机,我可以制作一个 curl php 脚本来接收一个 url,获取它并输出它,并将所有这些作为代理服务器,所以我可以把我的 vps ip在浏览器的代理设置中。
有什么办法吗?
注意:请不要向我推荐像 glype 这样的基于网络的代理。
谢谢
【问题讨论】:
【参考方案1】:是的,您可以(请参阅 Jasper 的回答)。这将有效地制作您自己的基于 Web 的代理。
但是,鉴于它是 VPS,我建议使用 SSH SOCKS 代理,因为它会更容易,并且会通过通往 VPS 的加密隧道运行。
【讨论】:
正如我的回答所指出的,我没有回答这个问题,所以我删除了我的答案,在你的答案上留下了一个悬空的指针。 您可以使用 3 种类型。 1- 网络代理(网络界面),即 http 代理。 // 通常的 WEB 2- http 代理,一个程序,一个干净的 http 协议代理 // 通常的 3-socks 代理 (v4/5),一个原始套接字连接。 // 更强大、更难的 Tor 实际上是一个套接字代理,但涉及更多。更多关于我的回答。谢谢你问这个。【参考方案2】:将 Apache 与 mod_proxy
和 mod_proxy_http
一起使用。请参阅docs。
您可以通过 https 访问代理,有效地加密您的计算机和 VPS 之间的所有流量。
【讨论】:
谢谢,如果我将 mod_proxy 添加到 htaccess,我应该在设置中放入什么端口? @David 你不能把它放在 .htaccess 中它必须在httpd.conf
或其中包含的某个文件中。端口是任意的。
mod_proxy_http 是使用从 apache 运行到“那个服务器”的反向代理(缓存代理)。它可以是 nginx、varnish、polipo、haproxy 或许多其他。这不是创建 vnc 服务器,而是请求 apache 本身从安装在机器上或远程机器上的另一个代理查询。 (la cloudflare 风格)。这提高了安全层,并可能为所有人提供虚拟缓存数据:)【参考方案3】:
你可以使用tor代理,这里是脚本:
<?php
function tor_new_identity($tor_ip='127.0.0.1', $control_port='9051',$auth_code='saad')
$fp = fsockopen($tor_ip, $control_port, $errno, $errstr, 30);
if (!$fp) return false; //can't connect to the control port
fputs($fp, "AUTHENTICATE $auth_code\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250') return false; //authentication failed
//send the request to for new identity
fputs($fp, "signal NEWNYM\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250') return false; //signal failed
fclose($fp);
return true;
?>
调用函数“if (tor_new_identity('127.0.0.01', '9051')) //do stuffs here
”
但是你必须在VPS 1st中安装tor系统。
【讨论】:
此脚本是 http 连接的套接字包装器。这很好,可以用来隧道到另一个袜子代理。 TOR 是一个袜子代理。我猜它不会打开浏览器来输入代理。他想在浏览器上配置代理,不是吗?【参考方案4】:你问错了。您询问 PHP 脚本,但不喜欢 Glype。 PHP的代理开发至少还有4个。
-
GlypeProxy,最著名的 PHP 代理。卷曲。
Poxy,我最近发现了它,亲爱的。使用客户端/服务器套接字。
php-proxy,但很少有同名的 // 太基础了
但事实上,没有人会让你用它连接你的浏览器,因为你需要为连接实现 tcp 包装器。这是您通常使用 cURL 或直接原始套接字获得 http 接口的方式。
您需要一个 SO 应用,而不是脚本。
我会向您推荐 Linux 的 Squid 代理(方便且干净的手册 http://es.kioskea.net/faq/613-instalar-un-servidor-proxy-http-squid) 我建议你不要使用 Windows(即使我这样做了),但 FreeProxy 很棒。 (在http://www.softpedia.com/get/Internet/Servers/Proxy-Servers/FreeProxy.shtml下载)
另一方面,您获得了 ***。 安装和连接到 *** 会更好、更容易,这是一个连接到您的 VPS 的受 SSH 保护的私有网络。这将通过与 VPS 的加密连接绕过来自您计算机的所有流量。
您将拥有 VPS 的 IP,以及从两侧到您的 VPS/桌面的“本地”连接。 (例如,除了 *** 之外不需要开放端口的 Web 服务器)
【讨论】:
【参考方案5】:您可以查看this PHP proxy that uses cURL。它并不完美(我正在修复它以处理 PUT 请求、应用程序/json POSTS 等)。问题是您需要配置 Web 服务器以将所有请求重写为此文件的文件名,以便您可以正确代理它们。
【讨论】:
以上是关于如何使用 php 脚本制作代理?的主要内容,如果未能解决你的问题,请参考以下文章