我正在使用Zombie.js来解析具有多个重定向的网址。出于某种原因,我希望能够检测到某种类型的重定向,然后停止处理(不要遵循该重定向)。
var browser = new Browser();
browser.on('redirect', function(request, response, redirectRequest){
var redirectUrl = response.url;
if (redirectUrl === 'http://www.example.com'){
//Do something and stop the processing
}
});
browser.visit(urlToLoad).then(function() {
//Do something
});
我尝试添加管道处理程序并使用next()
抛出错误,但这不起作用,因为我无法以这种方式检测重定向。如果我检测到我的重定向,有什么办法可以阻止浏览器加载页面吗?
答案 0 :(得分:0)
取决于“停止”的含义。您当然可以使用辅助变量检测管道上的重定向。在我的情况下,我必须检测重定向是否是登录表单,执行登录然后返回到原始页面。我找到了一种混合管道和事件监听器的方法:
let redirectedFrom = null;
Browser.extend(function(browser) {
browser.on('redirect', function(request, response) {
if (response.status === 302 && response.url === 'login_page')) {
redirectedFrom = request.headers.get('referer');
}
});
});
const browser = new Browser();
browser.pipeline.addHandler(function(browser, request, response) {
if (redirectedFrom !== null) {
// do something interesting here
redirectedFrom = null;
}
return response;
});
现在当我browser.visit()
并被重定向到登录页面时,我可以登录visit(redirectedFrom)