如何获取 CasperJS 请求的图像的二进制文件?
How to get the binary of the image requested by CasperJS?
代码:
casper.on("resource.received", function (response) {
if (response.url.indexOf('checkcode') != -1) {
this.log('response: ' + JSON.stringify(response), 'debug');
}
})
输出:
[debug] [phantom] [2016-04-21T01:36:46.007Z] response:
{"body":"","bodySize":1847,"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"},{"name":"Date","value":"Thu,
21 Apr 2016 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-Control","value":"no-cache,
private,
must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri,
01 Jan 1990 00:00:00
GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4;
Path=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=;
Secure;
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"}
[debug] [phantom] [2016-04-21T01:36:46.011Z] response:
{"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"},{"name":"Date","value":"Thu,
21 Apr 2016 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-Control","value":"no-cache,
private,
must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri,
01 Jan 1990 00:00:00
GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4;
Path=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=;
Secure;
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请求的图片的二进制文件呢?
正如 ArtjomB 评论的那样:
The response content is not available in PhantomJS
所以我通过 this.captureBase64('png', '#J-checkcode-img')
破解了它。
代码:
casper.on("resource.received", function (response) {
if (response.url.indexOf('checkcode') != -1) {
this.log('response: ' + JSON.stringify(response), 'debug');
}
})
输出:
[debug] [phantom] [2016-04-21T01:36:46.007Z] response: {"body":"","bodySize":1847,"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"},{"name":"Date","value":"Thu, 21 Apr 2016 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-Control","value":"no-cache, private, must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri, 01 Jan 1990 00:00:00 GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=; Secure; 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"}
[debug] [phantom] [2016-04-21T01:36:46.011Z] response: {"contentType":"image/png","headers":[{"name":"Server","value":"Tengine/2.1.0"},{"name":"Date","value":"Thu, 21 Apr 2016 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-Control","value":"no-cache, private, must-revalidate"},{"name":"Pragma","value":"no-cache"},{"name":"Expires","value":"Fri, 01 Jan 1990 00:00:00 GMT"},{"name":"Set-Cookie","value":"JSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=/; HttpOnly\nJSESSIONID=48565DE1A6030B587CB9D14F9B53FBB4; Path=; Secure; 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请求的图片的二进制文件呢?
正如 ArtjomB 评论的那样:
The response content is not available in PhantomJS
所以我通过 this.captureBase64('png', '#J-checkcode-img')
破解了它。