【问题标题】:How to get the binary of the image requested by CasperJS?如何获取 CasperJS 请求的图像的二进制文件?
【发布时间】:2016-08-13 23:24:42
【问题描述】:

代码:

casper.on("resource.received", function (response) {
    if (response.url.indexOf('checkcode') != -1) {
        this.log('response: ' + JSON.stringify(response), 'debug');
    }
})

输出:

[调试] [幻像] [2016-04-21T01:36:46.007Z] 响应: {"body":"","bodySize":1847,"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"} ,{"name":"日期","value":"星期四, 2016 年 4 月 21 日 01:36:45 GMT"},{"name":"Content-Type","value":"image/png"},{"name":"Content-Length","value":"1847"},{"name" :"Connection","value":"keep-alive"},{"name":"Strict-Transport-Security","value":"max-age=31536000"},{"name":"Cache-控制","值":"无缓存, 私人的, must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri, 1990 年 1 月 1 日 00:00:00 GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; 路径=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4;路径=; 安全的; HttpOnly\nspanner=Kkyr7NMMCJ+YBPeL1x6AIm/qefJ/jCic4EJoL7C0n0A=;path=/;secure;"}],"id":16,"redirectURL":null,"stage":"start","status":200," statusText":"OK","time":"2016-04-21T01:36:46.007Z","url":"https://omeo.alipay.com/service/checkcode?sessionID=94e0a91bab9e202d3ee2e574e1c8f245&t=0.6211719120304562"}

[调试] [幻象] [2016-04-21T01:36:46.011Z] 响应: {"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"},{"name":"Date","value" :“周四, 2016 年 4 月 21 日 01:36:45 GMT"},{"name":"Content-Type","value":"image/png"},{"name":"Content-Length","value":"1847"},{"name" :"Connection","value":"keep-alive"},{"name":"Strict-Transport-Security","value":"max-age=31536000"},{"name":"Cache-控制","值":"无缓存, 私人的, must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri, 1990 年 1 月 1 日 00:00:00 GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; 路径=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4;路径=; 安全的; HttpOnly\nspanner=Kkyr7NMMCJ+YBPeL1x6AIm/qefJ/jCic4EJoL7C0n0A=;path=/;secure;"}],"id":16,"redirectURL":null,"stage":"end","status":200," statusText":"OK","time":"2016-04-21T01:36:46.010Z","url":"https://omeo.alipay.com/service/checkcode?sessionID=94e0a91bab9e202d3ee2e574e1c8f245&t=0.6211719120304562"}

我得到了那些日志,但响应中没有二进制文件,所以我无法获取图像......

那么,如何获取 CasperJS 请求的图像的二进制文件?

【问题讨论】:

  • 响应内容在 PhantomJS 中不可用。既然你有网址,你试过casper.download(...)吗?
  • @ArtjomB。该网址为每个请求返回不同的图像(确实是验证码)。所以如果我下载它,它不是 PhantomJS 中显示的 CAPTCHA 图像。
  • @ArtjomB。但我找到了一个 hack,this.captureBase64('png', '#J-checkcode-img'),它有效...
  • 只需使用--web-security=false 命令行选项运行脚本,CORS 将被禁用

标签: javascript phantomjs casperjs


【解决方案1】:

正如 ArtjomB 评论的那样:

响应内容在 PhantomJS 中不可用

所以我通过this.captureBase64('png', '#J-checkcode-img') 破解它。

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多