我需要制作一个可以访问隐藏在登录屏幕后面的页面的代理脚本。我不需要代理来“模拟”登录,而是登录页面 HTML 应该正常显示给用户,所有 cookie 和 HTTP GET/POST 数据都通过代理流向服务器,所以登录应该是真正的。
我不需要登录名/密码,我只需要访问登录后生成的页面的 HTML 源代码。
这里有人知道如何实现吗?这简单吗?
如果没有,我从哪里开始?*(我目前正在使用 PHP)*
让您的 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 正文,您可能希望代理 HTTP 标头。您可以在 PHP5+ 中使用 fsockopen() 或 PHP 流函数(stream_socket_client() 等)
你可以查看http://code.google.com/p/php-transparent-proxy/,我做到了,因为我问自己同样的问题,我决定做一个。它在 BSD 许可下,所以玩得开心:)
您正在谈论的是访问您需要对其进行身份验证的页面。
这里有几件事是必须要规定的:
关键是,如果不先验证自己,您就无法获得访问权限。
至于语言,它在 PHP 中是相当可行的。正如问题上的标签所暗示的那样,您已经在使用正确的工具来完成这项工作。
我想知道的一件事是,你为什么称它为“代理”?您想将内容提供给其他用户吗?
编辑: [评论后更新]
在这种情况下,请使用 phproxy。它可以满足您的需求,并具有许多其他功能。
我建议使用 Curl(您可能需要在 php.ini 中激活的 php 库)它用于操作远程网站、处理 cookie 和您需要的每个 http 参数。您必须根据您访问的网页编写代理,但它会完成这项工作。