7

我正在尝试使用 phantomjs 的示例文件夹中的 rasterize.js 将网页捕获为 PDF。我遇到的问题是网页需要用户登录。然后我看到 Phantomjs 有一个 cookie 选项。该网站由 Django 驱动,以防万一。

所以我很有礼貌地登录了网站,打开了萤火虫,然后输入document.cookie了萤火虫。我得到了 cookie 设置并放入了我的 cookies.txt。

[http://localhost:7000]
csrftoken: f3da886168fae33b840e7f6c93240dff
sessionid: 27e90c3214b0ec94dadc739665724708
django_language: en

然后我使用 rasterize.js 创建如下 pdf:

phantomjs --cookies-file=cookies.txt examples/rasterize.js http://localhost:7000/reports /tmp/report.pdf

但结果仍然是登录页面。

4

1 回答 1

6

您是否尝试过在 PhantomJS 中自动化登录过程,确保包含 cookie 参数?这样 phantomjs 可以像浏览器一样使用 cookie 对用户进行身份验证。

另一种选择是使用像 fiddler 这样的代理检查请求,比较从有效的 firefox 发出的请求和从 phantomjs 发出的未经过身份验证的请求。标题中的信息应该告诉您缺少什么。

您可以使用 phantomjs 提供的功能添加 cookie:

http://phantomjs.org/api/webpage/method/add-cookie.html

于 2013-01-08T20:56:40.393 回答