成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden
- 问题描述
- 解决方案
- 原理
- 什么是User Agent
- 解决
问题描述
–2023-07-15 02:32:57-- https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)… 2402:f000:1:400::2, 101.6.15.130
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|2402:f000:1:400::2|:443… connected.
HTTP request sent, awaiting response… 403 Forbidden
2023-07-15 02:32:57 ERROR 403: Forbidden.
如图:
解决方案
在wget下载链接前面加上一个-U,如下
wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh
即
wget -U NoSuchBrowser/1.0 下载链接
成功解决!
原理
出现这个错误是因为在使用wget或curl请求资源时被服务器拒绝了,为了防止爬虫等消耗服务器资源,服务器根据你的请求头进行了选择性屏蔽,因此需要修改wget和curl的代理User-Agent来进行伪装。
什么是User Agent
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
常常要用server抓资料时,都会碰到直接使用wget和curl被服务器拒绝的状况。通常简单加个user-agent伪装一下就会过了。
什么是User Agent,怎么获取,可以参考下面这篇博客,当然你也可以直接用我上面这个。
什么是UserAgent以及使用浏览器查看UserAgent的方法:
https://blog.csdn.net/BobYuan888/article/details/88950275
解决
一、
修改wget的User-Agent
1、临时变更wget的UA
在wget前加上参数 -U,代表设置User Agent
wget www.google.com -U "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
2、永久变更Wget的UA
修改配置文件/etc/wgetrc,添加下面这一行:
header = User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
上面这个配置后会所有用户生效,如果只需要当前用户生效,可以将上面这行添加进~/.wgetrc,这个文件如果没有的话可以手动创建。
二、修改curl的User-Agent
1、临时变更curl的UA
使用以下参数:
curl https://www.google.com --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
2、永久变更curl的UA
修改配置文件~/.curlrc,添加下面这一行:
–user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36