设置一个php代理来访问被删除的网站并绕过防火墙

时间:2013-02-08 09:28:42

标签: php curl

我目前正在使用此插件http://wordpress.org/extend/plugins/repress/,它基本上使我的网站成为代理,以便用户可以访问这样的审查网站

www.mywebsite.com/proxy/www.cnn.com 

该插件运行良好,但是当涉及到绝对链接时,插件无法正确解析它并且链接仍然被阻止。插件开发已停止。所以我需要编写自己的脚本。我一直在各处搜索并阅读我能找到的教程,但没有一个特别有助于我这方面。

我知道如何使用php curl获取网站并在空白页面上回显它。我不知道的是如何将代理脚本设置为像上面的示例一样,用户可以键入

www.mywebsite.com 

接着是

/proxy.php 

然后是他们的目标网站

/www.cnn.com

目前我有这个设置:

<?php
$url = 'http://www.cnn.com';
$proxy_port = 80;
$proxy = '92.105.140.115';
$timeout = 0;
$referer = 'http://www.mydomain.com'


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);*/
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);       
curl_setopt($ch, CURLOPT_REFERER, $referer);

$data = curl_exec($ch);
curl_close($ch);
echo $data; 
?>

这会拉出主页,但不会检索到CSS或图像。同样,所有相关链接都被打破。我不知道如何应用proxy_port和代理变量。我试过了

92.105.140.115:80/www.cnn.com 

但这不起作用。因为我在一个示例站点上找到它,所以我不太了解这段代码。

非常欢迎任何有关教程的答案或链接。

谢谢!

2 个答案:

答案 0 :(得分:5)

拥有一个功能完备的代理并不那么简单。有许多这样的项目已经可用。任意一下:

玩得开心!

答案 1 :(得分:0)

你不能只在页面中回应一个curl的fetch网站的结果,因为浏览器会解释Uris不好,你需要当用户点击链接时他去你的代理网站而不是原来的网站,所以你不能只用echo打印,你需要编辑手册中每个链接的手册,然后再打印给用户,我有一个由php en p.listascuba.com制作的完整功能代理你不能尝试。

与我联系以获取更多信息