之前写了一个node的脚本,用来检测博客的友情链接是否互换成功,通过fetch()采集对方网站友情链接页面的HTML代码,搜索是否含有自己的博客域名来判断是否互换。但是运行了几次脚本发现其中一个网站页面无法打开的状态,后来发邮件询问大体说是被反爬虫给屏蔽了,考虑到自己的简陋的代码并没有处理反爬虫的这个情况,于是修改代码加入了headers中的'user-agent'
伪装。
但是添加后我想测试一下看看请求中headers是否添加了fetch()如何读取请求中的'user-agent'?
,本来希望打印response
中的herders来查看'user-agent'
是否伪装成功,直接在fetch的response中遍历headers是无法获得'user-agent'
这个属性。所以只好搭建一个临时服务器端来打印请求的request。
我是通过Python fastAPI创建了一个简单的服务器,然后使用fetch发送请求,在服务器端打印request的headers中的'user-agent'
,这次,可以看到'user-agent'
的属性被添加了。服务端的具体代码:
import uvicorn
from fastapi import FastAPI,Response,Request
app = FastAPI()
@app.get("/")
async def root(request:Request):
print(request.headers['user-agent'])
return {"message": "Hello World"}
if __name__ == '__main__':
uvicorn.run(app='main:app', host="127.0.0.1", port=8888, reload=True, )
node的请求代码很简单:
fetch(url, )
.then(res => {
// console.log(res);
return res.text()})
.catch((e) => {
console.error(`错误: ${e.message}`);
});
这样问题就解决了,直接在fetch的response中遍历headers是无法获得'user-agent'
这个属性。