JS,浏览器控制台模拟POST请求
最近在研究数据爬取,如果通过python、uibot等方式发起POST请求,很难通过登录图形验证等限制。今天有一个新思路,就是先在浏览器完成登录,再在浏览器控制台执行JS发起Post请求,这样可以利用浏览器的鉴权。
马上付诸行动测速一下。
浏览器控制台JS代码:
$.post("http://XX.XXXX.net:27001/api/tasklist/plugin/order-plugin/variables/66928815767126", {"archived": true, "names": ["isGigabit", "addrLevel", "twoAddrName", "maintainMode", "fiveAddrId", "fiveAddrName", "hcoverMode", "addrId", "accType", "resourceType", "addrLevelType", "addrName", "newAppointment", "PONserialNo", "SevenAddrMark"]});
返回异常:
responseJSON: {type: 'NullPointerException'}
responseText: "{\"type\":\"NullPointerException\"}"
我再看一下请求情况:
发送的请求负载异常,names字段,明明传入的是一个数组。
实际请求时却是错乱的,具体见图。
所以,如果我想再浏览器控制台来执行POST请求,应该怎么写?我不知道错在哪里,请各位大佬指教,感谢。
web端的技术了解的不多,学习一下
爬虫遇到跨域,js是搞不定的,还得后台跨域抓取 要手动改成name=xxx,name=xxx $.post("http://XX.XXXX.net:27001/api/tasklist/plugin/order-plugin/variables/66928815767126", {"archived": true, "names": JSON.stringify(["isGigabit", "addrLevel", "twoAddrName", "maintainMode", "fiveAddrId", "fiveAddrName", "hcoverMode", "addrId", "accType", "resourceType", "addrLevelType", "addrName", "newAppointment", "PONserialNo", "SevenAddrMark"])});
试试 另外要注意数据格式 ajax默认表单发送 有可能你这个网站是json发送的 linguo2625469 发表于 2022-11-28 16:05
$.post("http://XX.XXXX.net:27001/api/tasklist/plugin/order-plugin/varia ...
看到大佬的头像,我就知道问题已经解决了{:1_893:} linguo2625469 发表于 2022-11-28 16:05
$.post("http://XX.XXXX.net:27001/api/tasklist/plugin/order-plugin/varia ...
大佬,负载的类型Raw text是什么意思?如果再请求中把负载设置成Raw text。
请求的负载是正确了,还是报错。
我留意到网站请求时,负载时Raw text类型的。我手动请求是form-data。 cqwcns 发表于 2022-11-28 16:17
大佬,负载的类型Raw text是什么意思?如果再请求中把负载设置成Raw text。
请求的负载是正确了,还是报 ...
不清楚 不知道你说的负载是什么 浏览器上某个选项吗 由于安全原因,谷歌浏览器不允许在控制台发起post请求。所以即使没有跨域也不行。
页:
[1]
2