【发布时间】:2011-04-04 13:38:20
【问题描述】:
假设我有一个带有专用 ip 的 vps 主机,我可以制作一个 curl php 脚本来接收一个 url,获取它并输出它,并将所有这些作为代理服务器,所以我可以把我的 vps ip在浏览器的代理设置中。
有什么办法吗?
注意:请不要向我推荐像 glype 这样的基于网络的代理。
谢谢
【问题讨论】:
假设我有一个带有专用 ip 的 vps 主机,我可以制作一个 curl php 脚本来接收一个 url,获取它并输出它,并将所有这些作为代理服务器,所以我可以把我的 vps ip在浏览器的代理设置中。
有什么办法吗?
注意:请不要向我推荐像 glype 这样的基于网络的代理。
谢谢
【问题讨论】:
是的,您可以(请参阅 Jasper 的回答)。这将有效地制作您自己的基于 Web 的代理。
但是,鉴于它是 VPS,我建议使用 SSH SOCKS 代理,因为它会更容易,并且会通过通往 VPS 的加密隧道运行。
【讨论】:
将 Apache 与 mod_proxy 和 mod_proxy_http 一起使用。请参阅docs。
您可以通过 https 访问代理,有效地加密您的计算机和 VPS 之间的所有流量。
【讨论】:
httpd.conf 或其中包含的某个文件中。端口是任意的。
你可以使用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系统。
【讨论】:
你问错了。您询问 PHP 脚本,但不喜欢 Glype。 PHP的代理开发至少还有4个。
但事实上,没有人会让你用它连接你的浏览器,因为你需要为连接实现 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下载)
另一方面,您获得了 VPN。 安装和连接到 VPN 会更好、更容易,这是一个连接到您的 VPS 的受 SSH 保护的私有网络。这将通过与 VPS 的加密连接绕过来自您计算机的所有流量。
您将拥有 VPS 的 IP,以及从两侧到您的 VPS/桌面的“本地”连接。 (例如,除了 VPN 之外不需要开放端口的 Web 服务器)
【讨论】:
您可以查看this PHP proxy that uses cURL。它并不完美(我正在修复它以处理 PUT 请求、应用程序/json POSTS 等)。问题是您需要配置 Web 服务器以将所有请求重写为此文件的文件名,以便您可以正确代理它们。
【讨论】: