遇到的问题: phantomjs解析的时候,超时严重导致漏抓。
简化页面内容如下:
通过伟大的注释调试法,可以发现问题在这行代码里:
动态分析时会主动去执行行内绑定的代码,即:window.close()
。关闭了页面之后,PhantomJS后续绑定的事件都会失效,比如page.evaluate
、page.onCallback
、phantom.exit
。没有执行exit函数,一直阻塞导致触发python的超时——狗带。
修复方案:
在执行关闭页面的时候,PhantomJS的onClosing
事件可以收到通知,示例代码如下:
还可以通过Hook来解决这个问题:
案例代码:
<script type="text/javascript" language="javascript">
function BtnPsw_onclick() {
window.open("../Login/UpdatePass")
}
</script>
<form name="form1" method="post" action="" id="form1">
用户名:<input name="UserName" type="text" id="UserName" class="logintext"><br/>
密码: <input name="Password" type="password" id="Password" class="logintext"><br/>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="1222">
<input name="LoginButton" type="button" id="LoginButton" value="登 录" class="lbotton">
<input name="login" type="button" value="退 出" class="lbotton" onclick="window.close()">
<input name="UpdatePwd" type="button" value="修改密码" class="lbotton" onclick="BtnPsw_onclick()">
</form>
上次推送的文章因为关键字被干掉了,改天我折腾好博客再发吧...hexo搞起来心好累...