我正在尝试捕获已重定向的网页(我没有实际网址,我访问了网址,然后将其重定向到真实网址)
例如 这是我正在捕获的URL
http://facebook.com/930559626990858
将用户重定向到
https://www.facebook.com/kalyani.emandi/videos/930559626990858/
Phantomjs没有为这样的链接创建图像
这是我正在使用的代码
var page = require('webpage').create();
page.open('http://facebook.com/930559626990858', function() {
page.render('facebook.png');
phantom.exit();
});
如何捕获已重定向的网址
更新
重定向..._ script_path = " WebIDEndpointDispatchController&#34 ;;变种 uri_re = / ^(?:(?:[^:/?#] +):)?(?://(?:[?^ /#] ))?([?^#] (?:\([^#] )?(?:#()EM>))?)/,TARGET_DOMAIN ='&#39 ;; window.location.href .replace(uri_re,功能(A,b,C,d){风险 E,F,G; E = F = B +(C'&#39 + C:?'&#39);若(d){d = d.replace(/ ^( !|%21)/'&#39); G = d.charAt(0);如果(克==' /' ||克==' \ ')E = d.replace(/ ^ [\ /] + /,' /&#39);}如果(E = F){如果(window._script_path)的document.cookie = " RDIR =&#34 + + window._script_path&#34 ;; 路径= /; 域="(/ ^ (脸谱.. 的)$ / I,&#39。; $ 1和#39); + window.location.hostname.replace window.location的。替换(TARGET_DOMAIN + E);}}); / * = 0){掷 1;}} si_cj(" 3");} catch(e){si_cj(" 1 \ t"); window.document.write(" \ u003Cstyle> body * {display:none !important;} \ u003C / style> \ u003Ca href = \"#\" 的onclick = \" top.location.href = window.location.href \" style = \" display:block!important; padding:10px \">转到 Facebook.com \ u003C / A>&#34); / nj4wiNXp /}}}())/ ]]> /window.location.replace(& #34; HTTPS://www.facebook.com/kalyani.emandi/videos/930559626990858/");
这是保存的html中显示的上述脚本(由评论中提到的示例生成)
答案 0 :(得分:-1)
我运行了一个PhantomJs-as-web-service SaaS,当我通过它运行你的网址时,它可以运行:
看看这个输出,pageResponses.events
节点。这会告诉您当您的网址是请求时发生了什么。你会看到有页面重定向发生。 PhantomJs因未能正确处理重定向和AJAX“页面完整”而臭名昭着。
解决您的问题,您需要在渲染时添加延迟。 (您所遵循的标准示例不处理AJAX内容)。一个快速而肮脏的黑客将是:
var page = require('webpage').create();
page.open('http://facebook.com/930559626990858', function() {
setTimeout(function(){
page.render('facebook.png');
phantom.exit();
},2000
});