Javascript 通过ajax post请求从网站检索结果
我正在尝试执行一个简单的ajax post请求,以从网站检索一些数据。 详细地说,我正试图联系一个网页,一个网站召回有一些信息。 因此,我有一个主网站和一个页面,它调用检索数据。 我发现该页面使用google inspection部分,特别是inspector的网络字段的xhr部分。 在我的代码中,我使用了网站用于联系页面的所有标题和有效负载数据。Javascript 通过ajax post请求从网站检索结果,javascript,ajax,post,web-scraping,http-headers,Javascript,Ajax,Post,Web Scraping,Http Headers,我正在尝试执行一个简单的ajax post请求,以从网站检索一些数据。 详细地说,我正试图联系一个网页,一个网站召回有一些信息。 因此,我有一个主网站和一个页面,它调用检索数据。 我发现该页面使用google inspection部分,特别是inspector的网络字段的xhr部分。 在我的代码中,我使用了网站用于联系页面的所有标题和有效负载数据。 这是我用来实现目标的代码: var XMLHttpRequest = require("xmlhttprequest").XMLHttpRe
这是我用来实现目标的代码:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var url = 'https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList';
var body = {"SiteRegionID":"12","RegionID":"12","RegionRowID":"78","ProvinceID":"0",
"LanguageCode":"ITA","MinInternetCount":"0","SearchType":"","OfficeAgent":"0",
"EncodingLanguage":"PTG","OfficeAgentId":"0"};
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var data = xhr.responseText;
if (xhr.readyState == 4 && xhr.status == "200") {
console.table("results: "+data);
} else {
console.error("error: "+data);
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
//xhr.setRequestHeader("Content-Type","text/html");
xhr.setRequestHeader("Access-Control-Allow-Origin","*");
xhr.setRequestHeader("accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("authority", "www.remax.pt");
xhr.setRequestHeader("scheme", "https");
xhr.setRequestHeader("path", "/Webservices/MainWebService.asmx/GetCityList");
xhr.setRequestHeader("accept-language","it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7");
//xhr.setRequestHeader('accept-encoding', 'gzip, deflate, br');
//xhr.setRequestHeader("host", "https://www.remax.pt");
//xhr.setRequestHeader('referer', 'https://www.remax.pt/PublicListingList.aspx');
//xhr.setRequestHeader('content-length', '192');
//xhr.setRequestHeader('cookie','__cfduid=dc7dd48ccff40ee4f85840bfc35685b311531384150; PersonalizationMap=; PersonalizationGallery=SelectedCountryID=12; GtTransLang=ITA; SLINGSHOT=LanguageCode=it-IT; SessionId=1ac0ec84-6a03-4965-ba90-7eb686f66bf5; ASP.NET_SessionId=rgia1pblms2abf11ypsbiqgz; GtTrans=ENU; LastSearch=SiteRegionID=12&TransactionTypeUID=260&RegionID=12&RegionRowID=78&LocationText=Porto&LocationValue=YR78&PriceCurrency=EUR&ComRes=2; PersonalizationRegion=#mode=list&tt=260&cr=2&r=78&cur=EUR&la=All&sb=PriceIncreasing&page=1&sc=12&sid=a81a1d1d-ee36-4236-a72e-31343349c574; PersonalizationDate=2018-7-24 10:0:30');
xhr.setRequestHeader("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36");
xhr.setRequestHeader("x-requested-with", "XMLHttpRequest");
xhr.send(JSON.stringify(body);
事实上,我从来没有得到过答案。我认为操作流永远不会进入onLoad部分,因为if和else部分中的字符串永远不会被打印。
我想指定对某些标题进行注释,因为我有这种类型的答案:
拒绝设置不安全的标头“nameHeader”
所以我决定暂时不使用它们
我试图更改一些标题或添加一些新的内容,但问题仍然存在,老实说,我不知道这是否是某些字段的语法问题,或者是否需要其他东西来执行可接受的请求
为完整起见,我插入了我在inspector工具中找到的4个字段,这些字段指定了网站为调用页面而传递的参数:
概述:
1. Request URL:
https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList
2. Request Method: POST
3. Status Code: 200
4. Remote Address: 104.25.40.105:443
5. Referrer Policy: no-referrer-when-downgrade
响应标题:
1. Request URL:
https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList
2. Request Method: POST
3. Status Code: 200
4. Remote Address: 104.25.40.105:443
5. Referrer Policy: no-referrer-when-downgrade
{“SiteRegionID”:“12”,“RegionID”:“12”,“RegionRowID”:“78”,“ProvinceID”:“0”,“LanguageCode”:“ITA”,“MiniInternetCount”:“0”,“SearchType”:“OfficeAgent”:0,“EncodingLanguage”:“PTG”,“OfficeAgentId”:0}现在我在这一页找到了答案:。现在的问题是,我收到了内部服务器错误500的html。消息说:“您正在查找的资源有问题,无法显示”。好的,我解决了这个问题。对于那些想知道的人,我需要在请求中添加以下标题:“访问控制允许标题”,“内容类型”