我需要创建一个可以访问隐藏在登录屏幕后面的页面的代理脚本。我不需要代理来“模拟”登录,而是登录页面HTML应该正常显示给用户,并且所有cookie和HTTP GET / POST数据都要通过代理流到服务器,所以登录应该是可信的。
我不想登录/密码,我只需要在登录后访问生成的页面的HTML源代码。
这里有人知道如何实现这一目标吗?这很容易吗?
如果没有,我从哪里开始?*(我目前正在使用PHP)*
答案 0 :(得分:3)
让您的PHP脚本请求您想要的URL,并重写所有链接和表单操作以指回您的PHP脚本。当接收到具有URL参数的脚本的请求时,将其转发到远程服务器并重复。
您将无法捕获所有JavaScript请求,(除非您实现了“代理”的JavaScript部分)
例如:用户在您的代理表单中键入http://example.com/login.php。
将用户发送到http://yoursite.com/proxy.php?url=http://example.com/login.php
确保对参数“http://example.com/login.php”
进行urlencode在http://yoursite.com/proxy.php中,您向http://example.com/login.php
发出HTTP请求$url = $_REQUEST['url'];
// make sure we have a valid URL and not file path
if (!preg_match("`https?\://`i", $url)) {
die('Not a URL');
}
// make the HTTP request to the requested URL
$content = file_get_contents($url);
// parse all links and forms actions and redirect back to this script
$content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content);
echo $content;
请注意, / some-smart-regex-here / i 实际上是一个应该写入解析链接的正则表达式,等等。
该示例仅代理HTTP Body,您可能希望代理HTTP标头。您可以在PHP5 +中使用fsockopen()或PHP流函数(stream_socket_client()等。)
答案 1 :(得分:2)
你可以查看http://code.google.com/p/php-transparent-proxy/,我之所以这样做,是因为我问自己完全相同的问题,我决定制作一个。它是BSD许可证,所以玩得开心:)
答案 2 :(得分:1)
您所谈论的是访问您需要自己验证身份的网页。
以下是必须制定的一些事项:
关键是,如果不首先验证自己,就无法获得访问权限。
至于语言,它在PHP中非常可行。正如问题上的标签所示,您正在使用正确的工具来完成这项工作。
我想知道的一件事是,你为什么称它为“代理人”?你想将内容提供给其他用户吗?
编辑: [评论后更新]
在这种情况下,请使用phproxy。它可以满足您的需求,还有许多其他功能。
答案 3 :(得分:0)
我建议使用Curl(您可能需要在php.ini中激活的php库) 它用于操纵远程网站,处理cookie和您需要的每个http参数。 你必须根据你正在打的网页编写你的代理,但它会成功。