2017-05-15 45 views
0

使用Casperjs我从远程服务器下载一些APK,但得到一个空的apk(0字节)。casperjs响应头content-length 0

try { 
     this.echo("Attempting to download file "); 
     var fs = require('fs'); 
     var appUrl = 'http://website.com/download/someapp.apk'; 
     casper.download(appUrl, fs.workingDirectory+'/'+'newApk.apk'); 
    } catch (e) { 
     this.echo(e); 
    } 

而我正在接受这个响应标题。

Server: nginx/1.10.2 
Date: Mon, 15 May 2017 06:49:10 GMT 
Content-Length: 0 
Connection: keep-alive 
X-Robots-Tag: noindex 
Location:http://website.com/download/someapp.apk 
Expires: Thu, 01 Jan 1970 00:00:01 GMT 
Cache-Control: no-cache, max-age=0, no-cache, no-store, must- 
revalidate, proxy-revalidate, no-transform 
Pragma: no-cache 

回答

0

如果URL是正确的,并且您的代码有效,它应该有效。为了帮助你,这里是一个最小的工作示例脚本,在当前目录中下载图像:

var casper = require('casper').create(); 

casper.start('https://duckduckgo.com', function() { 
    var url = 'https://duckduckgo.com/assets/logo_homepage.normal.v107.svg'; 
    this.download(url, 'duckduckgo-logo.svg'); 
}); 

casper.run(function() { 
    this.echo('Done.').exit(); 
}); 

如果仍然不能正常工作,它可能是一个问题与安全。在这种情况下,尝试使用casperjs --web-security=no download.js运行脚本或配置您的卡斯帕例如像这样:

var casper = require('casper').create({ 
    pageSettings: { 
    webSecurityEnabled: false 
    } 
}); 

OR

casper.page.settings.webSecurityEnabled = false;