curl 库是不是在页面内执行 javascript?
Posted
技术标签:
【中文标题】curl 库是不是在页面内执行 javascript?【英文标题】:Does the curl library execute javascript inside pages?curl 库是否在页面内执行 javascript? 【发布时间】:2011-06-22 04:28:39 【问题描述】:我正在处理几个页面,其中 javascript 在页面加载时执行表单提交。
curl 库会在网页中自动执行 javascript 吗?如果是这样,有没有一种方法可以返回更改后的 DOM,而不是我使用简单 curl 代码返回的默认 DOM。
这是我当前的代码:
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$url);
$buffer = curl_exec_follow($curl_handle,10);
curl_setopt($curl_handle,CURLOPT_HEADER, 0);
curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION, 1);
$buffer = curl_exec($curl_handle);
【问题讨论】:
cURL 没有 JavaScript 解析器,因此无法执行。 【参考方案1】:不,它没有。它也不应用 css 样式。
【讨论】:
【参考方案2】:No。嵌入了 JavaScript 的网页实际上是一个程序。 CURL 为您提供程序的源代码(html 和 JavaScript),但不运行该程序。
要运行页面的嵌入式 JavaScript,您需要 (1) JavaScript 解释器,以及 (2) 页面的文档对象模型 (DOM)。
浏览器有这些,但 PHP 没有。
人们正在开发这些的 php 版本,但开发这些是一项艰巨的任务。
如果这是您需要的,您可以跳过 PHP,转而使用 WebKit 编写 C++ 代码。
【讨论】:
不应将网页描述为“程序”。【参考方案3】:PHP curl 不是一个完整的浏览器。它只是一个用于与服务器通信的库,使用 HTTP、FTP 等。它既不渲染也不解析。
【讨论】:
以上是关于curl 库是不是在页面内执行 javascript?的主要内容,如果未能解决你的问题,请参考以下文章
向数百个站点发出 curl 请求是不是会被某些主机视为攻击?
php curl_exec,服务器上开启了这个功能,但是提示无法加载
群晖 WebStation PHP curl 进行 http 请求(群晖 WebStation 安装第三方库)