Я новичок в phantomjs, и я написал фрагмент кода, который позволяет мне делать запрос с заголовком и телом. Однако, когда я делаю почтовый запрос, данные не отправляются. В чем проблема?phantomjs post request with formurlencoded
var webPage = require('webpage');
var page = webPage.create();
console.log('1');
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
"Cookie":"ASP.NET_SessionId=ajq11hy45hmdmr51ra3ivtee; otohitsforgery=G6ZHZo_p9dC1oczq_GB8_9I76pgnmBoVbCpkKnG8oAJJLaEXhTlAJmsCT6Ttg5J_I4ajeODlp1OgksJ7xn1ZDTXLk85cr2vOxJ3kl5YsuCgmprP3WRNzm_f5wOJqgQNXLXwwdeBaxWqYeGi6PeQgbg2",
"Content-Type":"application/x-www-form-urlencoded"
},
data: {
"__RequestVerificationToken":"Ujol0sctq8I5bko4eLieDLP6ZiX1wShq3zP77JLpj8rAJy0MJIaI9JAt-ZfYmmqQkiL9QVUw7la6lqlwByqcUifU264H35Dq0pZUokl87jc5f1SpNA4G1_y5sF2eWB-MKWDC5WW33GdZnyRRXZP2ndGcBFB0hTwk5SPhGc3-z1I1",
"ReturnUrl":"",
"Email":"[email protected]",
"Password":"111111"
}
};
page.open('url', settings, function(status) {
console.log('Status: ' + status);
var cookies = page.cookies;
console.log('Listing cookies:');
for(var i in cookies) {
console.log(cookies[i].name + '=' + cookies[i].value);
}
var content = page.content;
console.log('Content: ' + content);
phantom.exit();
});
Вот скриншот, когда я отслеживаю запрос с помощью скрипача. Я получаю следующее. В моем заголовке все есть: Header
Однако в веб-форму, я ничего не получаю: Webform
И тогда я получаю внутренняя ошибка сервера на 500.
Что мне нужно изменить, чтобы сделать запрос на отправку, чтобы данные были включены в мой запрос?
Мне также нужны печеньки. Я не смогу войти в систему без файлов cookie. что я придумал фрагмент кода. Но по какой-то причине он работает неправильно.
var webPage = require('webpage');
var page = webPage.create();
console.log('1');
page.open("http://someurl.com",function(status){
var cookies = page.cookies;
console.log('Listing cookies:');
for(var i in cookies) {
console.log(cookies[i].name + '=' + cookies[i].value);
}
cookies = cookies[1].name + '=' + cookies[1].value + '; ' + cookies[0].name + '=' + cookies[0].value;
console.log(cookies);
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
"Cookie":cookies,
"Content-Type":"application/x-www-form-urlencoded"
},
data: {
"__RequestVerificationToken":"Ujol0sctq8I5bko4eLieDLP6ZiX1wShq3zP77JLpj8rAJy0MJIaI9JAt-ZfYmmqQkiL9QVUw7la6lqlwByqcUifU264H35Dq0pZUokl87jc5f1SpNA4G1_y5sF2eWB-MKWDC5WW33GdZnyRRXZP2ndGcBFB0hTwk5SPhGc3-z1I1",
"ReturnUrl":"",
"Email":"[email protected]",
"Password":"111111"
}
var postBody = "";
Object.keys(data).forEach(function (key) {
postBody += (key + "=" + data[key] + "&");
});
console.log(postBody);
};
page.open('http://www.someurl.com', 'POST', settings, function(status) {
console.log('Status: ' + status);
phantom.exit();
});
Как это сделать?
});
Является '500 внутреннего error' сервера происходит, когда вы делаете запрос POST? – Vaviloff
Да, это происходит только тогда, когда я делаю этот запрос ... вероятно, потому, что этот файл cookie неверен, но моя главная проблема заключается в том, как я могу передать контент как formurlencoded – Puzzle
any ????????? – Puzzle