如何在cURL请求中传递Javascript操作

如何在cURL请求中传递Javascript操作,javascript,php,jquery,html,curl,Javascript,Php,Jquery,Html,Curl,我正在向一个网页发出一个cURL-GET请求来下载HTML。该网页具有基于滚动的内容显示,就像Facebook的时间线一样,即最初只加载一些内容,然后随着用户滚动而增量加载更多内容 我想知道我是否可以利用JS并使用类似于window.scroll(0,document.height)的东西和cURL-GET请求来指定页面应该滚动到的高度。我知道我需要滚动到什么高度才能在网站的所有网页上获得所需的HTML 我的cURL请求如下所示: curl -X GET 'https://www.mywebsi

我正在向一个网页发出一个cURL-GET请求来下载HTML。该网页具有基于滚动的内容显示,就像Facebook的时间线一样,即最初只加载一些内容,然后随着用户滚动而增量加载更多内容

我想知道我是否可以利用JS并使用类似于
window.scroll(0,document.height)
的东西和cURL-GET请求来指定页面应该滚动到的高度。我知道我需要滚动到什么高度才能在网站的所有网页上获得所需的HTML

我的cURL请求如下所示:

curl -X GET 'https://www.mywebsite.com/username/photos' --verbose --user-agent $USER_AGENT --cookie $COOKIES --cookie-jar $COOKIES

通过使用客户端呈现,没有。但是,如果可以更改登录页,可以指定一个参数,该参数将在客户端上呈现足够的内容,从而使其可用于cURL请求。例如,调用
https://www.mywebsite.com/username/photos?curl=1
将预呈现需要刮取的页面部分


如果您不控制登录页,您可以添加所有滚动AJAX调用并重建HTML结构,前提是没有会话控制或类似的东西,您无法预测,否则不会返回任何内容。

我将发布我的答案,以防这对其他人有用

正如上面提到的,cURL本身不会接受Javascript。但是,如果该网页正在发出任何Ajax请求,那么您可能会很幸运

如果网页是通过Ajax调用加载数据的,那么可以利用浏览器(比如Chrome)的网络请求日志选项。加载数据的Ajax请求(或PHP请求)可以在Chrome的Network选项卡中保存为cURL请求

有关保存网络日志的更多信息,请访问

Google developers page
Chrome的网络记录器将自动将头、用户代理、cookie参数打包到cURL请求中,并几乎输出一个准备在shell上运行的命令

AFAIK cURL没有渲染引擎,因此“高度”之类的东西不会使senseJavascript事件在客户端上运行。Curl在服务器上运行。所以,呃,不。我不认为你可以,cURL只获取文件内容,而不是浏览器,你需要的是无头浏览器是的,这也是我的直觉。还有什么好点子可以玩吗?@adeneo你是说像Phantom.js这样的东西吗?我明白了,是的,我刚看了一下浏览器上的“网络”选项卡,在向下滚动时看到一些Ajax调用。不要控制登录页。所以它不是你的网站。。。嗯,用卷曲来处理它会很困难。试着找出那些电话里发生了什么。我明白了,是的,实际上不是我的网站!是的,我在看阿贾克斯的动作。我想如果我能弄清楚这些,也许这些可以通过cURL请求来传递?是的,你完全可以通过cURL来进行这些调用。看看你需要哪些,看看你是否能够重建HTML。这很好,我发现Ajax调用正是生成我所需要的(在本例中是照片URL)。它从cookie中获取一些参数,例如用户ID和一些其他项目。现在尝试将这些参数添加到cookie文件中,它应该可以工作了。