惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
Y
Y Combinator Blog
博客园 - 【当耐特】
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
量子位
C
Check Point Blog
F
Fortinet All Blogs
罗磊的独立博客
Last Week in AI
Last Week in AI
GbyAI
GbyAI
L
LangChain Blog
博客园 - 司徒正美

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
fetch()如何读取请求中的`user-agent`?
J.sky · 2023-05-15 · via 碎言

之前写了一个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'这个属性。