使用PhantomJS转到URL时获取403禁止访问

时间:2018-12-20 12:09:22

标签: phantomjs user-agent http-status-code-403

如果我在Chrome中转到以下网页,则可以正常加载:https://www.cruisemapper.com/?poi=39

但是,当我运行以下PhantomJS脚本时,该脚本只是转到相同的URL并将整个DOM字符串输出到控制台,我收到一条403 Forbidden消息:

var page = require('webpage').create(),
    url = 'https://www.cruisemapper.com/?poi=39';

page.open(url, function (status) {
    if (status === 'success') {
        console.log(page.evaluate(function () {
            return document.documentElement.outerHTML;
        }));

        phantom.exit();
    }
});

这是控制台的确切输出:

<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br>
</p>

</body></html>

我认为,如果添加某种用户代理字符串,它可能会起作用。因此,我在console.log行上方添加了以下内容:

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36';

但是那没有用。因此,我尝试了以下方法:

page.customHeaders = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
};

但是那也不起作用。有人对我如何找到上面的URL而不会收到403 Forbidden消息有任何建议吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码对我来说很好(不过我建议您模拟视口大小,请参见代码)。如果您仍然收到403,请尝试更改IP,现在该站点可能已打开(您可能多次访问该页面)。

array(2) { [0]=> int(1) [1]=> int(2) } 
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 
array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }