如何获取GET请求URL使用PHP

时间:2015-02-15 14:07:24

标签: php get request

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

get GET requests using Chrome dev tools

我需要使用PHP获取此信息,我应该使用哪种方法?感谢。

1 个答案:

答案 0 :(得分:2)

简答:

只有PHP,你不能。 (好吧,你可以,但你必须编码"浏览器引擎")。

答案很长:

请求地址

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

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

$body包含' http://www.google.com'的响应正文,在本例中为HTML文件。

然而,URL有时会回复一些与HTML文件不同的东西(可以是XML,json,明文等......)

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

某些标题可能会指向'也适用于其他资源,这意味着您还需要正确解析标题。

解析响应主体

现在您需要解析响应,尊重响应内容类型标头。如果它是json或纯文本,那么你很高兴,因为据我所知,这些类型的文件无法提出进一步的请求。

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

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

但是,您可能需要先处理错误或验证并修复html源代码,因为DOMDocument非常容易出现格式错误的HTML文档。

遍历响应主体

您需要遍历HTML文档并查找HTML标记'请求资源。例如,图像标签,脚本标签,对象标签等......

这可能涉及大量编码。

AJAX,陷阱

然而,即使在所有这些工作之后,仍然存在问题。现代页面广泛使用异步请求(例如,采用基于角度的页面)。

为了获取这些异步请求,您需要在PHP中创建一个javascript解析器和解释器(这是疯狂的)或依赖第三方工具(例如,您可以通过数据nodejs来运行你的javascript)。