// 随便找的链接
axios.get('https://www.cnblogs.com/jcz1206/p/13640039.html')
.then(respans => {
res.send(respans);
})
用axios返回的是第一个那个数据(13640039.html
),其他的请求可能是它自带的js代码发出的请求,用什么方法能够捕获到这些请求吗?
比如 search.svg
、newpost
// 随便找的链接
axios.get('https://www.cnblogs.com/jcz1206/p/13640039.html')
.then(respans => {
res.send(respans);
})
用axios返回的是第一个那个数据(13640039.html
),其他的请求可能是它自带的js代码发出的请求,用什么方法能够捕获到这些请求吗?
比如 search.svg
、newpost
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
5 回答1.3k 阅读✓ 已解决
全部“捕获”应该是不可能,但是可以尽力而为。
对于使用 JS 发送的请求,可以这样监听:
XHR
发送的请求(当然还有IE
专属的 XMLObject 方法,略);window.fetch
方法,以监听fetch
发送的请求;WebSocket
类,以监听使用WS
发送的请求和收到的数据。对于一些使用其他手段发送的请求:
form
节点,并监听其submit
事件;iframe
加载的,所以需要遍历并获取所有iframe
,获取其contentWindow
内容,并持续监听其onload
事件。静态资源的请求较难监听,可以分两种情况:
href
(对于link[rel="stylesheet"]
加载的样式表)或src
(例如图片、音频等);document.write
、document.createElement
、Element.prototype.appendChild
等方法,重写XMLDocument
等类,并劫持document.innerHTML
等可能产生子元素的属性,监听新元素的生成,再采用与首屏渲染的静态资源类似的策略获取资源URL
。不要忘了文档本身,这个直接获取
window.location.href
即可。绝大部分的资源和请求可以通过上面这些方法的组合来获取,但网络字体、source-map 的加载暂时没有有效的监听方法,一个头铁的做法是解析对应的
CSS
、JS
文件,古早的flashSocket
需要研究其具体实现,然后采用对应的方法。