【发布时间】:2017-12-04 22:47:32
【问题描述】:
我正在使用 npm 中的请求模块向受密码保护的站点发出 HTTP 请求,输入密码,存储 cookie,然后在存储并验证 cookie 后发出请求。我能够获得与普通浏览器请求相同的标头,但是主体本身,而不是我在浏览器中获得的 HTML 文档,看起来像这样:
� �Z�r�H��c��䞙��pT���Ī$3�ƾ�~Y�@�MK8���>*��?�z)�?U��� ����J�혳��섯tB��x��c��?����������0�H�����V��O'�7����}。 ��L�"˖}/ta�xn�g#����O�����
任何想法可能导致此问题或如何解决?
此外,当我从命令提示符运行此程序时,计算机“叮当”
这是我正在运行的完整 node.js 代码(减去 URL/密码/等)
var parsedurl1 = url.parse( urlstring1 );
var options1 = {
hostname: parsedurl1.hostname,
port: ( parsedurl1.port || 80 ), // 80 by default
method: 'POST',
path: parsedurl1.path,
headers: {
'Host': hostname
,'User-Agent': myuseragent
,'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
,'Accept-Language':"en-US,en;q=0.5"
,'Accept-Encoding': "gzip, deflate"
,'Referer': hostname
,'Content-Type': "text/html; charset=utf-8"
,'Content-Length': Buffer.byteLength(postData)
,'Connection': "keep-alive"
,'Upgrade-Insecure-Requests': "1"},
};
var cookiefile ;
var postData=querystring.stringify({
'email': myemail
,'password':mypassword
,'action': 'login'
,'go.x': 0
,'go.y': 0
})
var cookiefile;
var callback = function ( response ) {
// display returned cookies in header
var setcookie = response.headers["set-cookie"];
if ( setcookie ) {
setcookie.forEach(
function ( cookiestr ) {
cookiefile = cookiestr;
fs.writeFile(cookiefilelocation, cookiestr);
console.log( "COOKIE:" + cookiestr );
}
);
}
var data = "";
response.on(
"data",
function ( chunk ) { data += chunk; }
);
response.on(
"end",
function () {
newcookiefile = cookiefile.substr(0, cookiefile.indexOf(";"));
var parsedurl2 = url.parse( urlstring2 );
var options2 = {
url: urlstring2,
// port: ( parsedurl2.port || 80 ), // 80 by default
method: 'GET',
// path: parsedurl2.path,
headers: {
"Host": hostname
,"User-Agent": myuseragent
,'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
,'Accept-Language':"en-US,en;q=0.5"
,'Accept-Encoding': "gzip, deflate"
,'Referer':hostname
,'Cookie': newcookiefile
,'Connection': "keep-alive"
,'Upgrade-Insecure-Requests': "1"},
};
function callback3(error, response, body){
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response.headers ); // Print the response status code if a response was received
console.log('body:', body.substr(1,1000));
fs.writeFile('./config/pullfiles/mostrecent.txt', body);
}
requestlib(options2, callback3);
}
);
};
var request = http.request(options1, callback);
request.on(
"error",
function( err ) {
console.error( "RERROR:" + err );
}
);
request.write(postData);
request.end(); // let request know it is finished sending
【问题讨论】:
-
您的计算机因包含
0x07的字节而响起,这是“铃”字符代码。 (与电传打字时代相关得多。)无论如何,根本没有代码,没有要检查的数据包捕获,甚至没有一个 URL 来尝试我们自己,这不可能帮助你。您正在查看来自某物的一堆二进制数据。 -
好的,我现在正在更新更多信息 - 抱歉之前还不够
-
@Brad 我已经添加了我的完整代码 - 如果这仍然不符合标准,请告诉我,我将关闭并重写问题。谢谢
-
这不是要编写标准,而是要提供相关信息,以便人们可以真正帮助您...
-
好的,谢谢。我已经添加了代码。我不知道如何给一个数据包捕获。