如何获取 GET 请求 URL 使用 PHP

How to get GET requests URL makes using PHP

如您所知,您可以使用 Chrome 开发人员工具或 Firebug 获取网站发出的所有请求。像这样:

我需要使用PHP获取此信息,我应该使用什么方法?谢谢。

简答:

只有 PHP,你不能。 (好吧,你可以,但你必须编码 "browser engine")。

长答案:

请求地址

使用 php,您可以向地址发出请求并使用 cURL or even file_get_contents 下载响应(前提是您的 php.ini 允许)。例如:

$body = file_get_contents('http://www.google.com');
var_dump($body);

$body 包含“http://www.google.com”的响应 body,在本例中,它是一个 HTML 文件。

然而,URL 有时会用不同于 HTML 文件的内容来回答(可以是 XML、json、纯文本等...)

cURL 允许您获取和检查响应 headers,您可以使用它来发现响应的内容类型。 Check this SO post for further details.

一些 header 也可能 'point' 到其他资源,这意味着您也需要正确解析 header。

正在解析响应 body

现在您需要解析响应,尊重响应 content-type header。如果它是 json 或 plain-text,那么您就可以开始了,因为据我所知,这些类型的文件无法发出进一步的请求。

但我们假设它是正常的、普通的、普通的 HTML。您可以使用 DOMDocument 来解析 HTML.

$doc = new DOMDocument();
$doc->loadHTML($body);

但是,您可能需要首先抑制错误或验证并修复 html 源,因为 DOMDocument 很容易被格式错误的 HTML 文档阻塞。

遍历响应body

你需要遍历HTML文档,寻找请求资源的HTML'tags'。例如,图像标签、脚本标签、object 标签等...

这可能涉及大量编码。

AJAX,陷阱

然而,即使完成了所有这些工作,仍然存在问题。现代页面广泛使用异步请求(例如,基于 angular 的页面)。

为了抓取那些异步请求,您需要在 PHP 中创建一个 javascript 解析器和解释器(这很疯狂)或者依赖在第三方工具上(例如,您可以将数据 nodejs 传递给 运行 您的 javascript)。