wget 的替代方案给出 'ERROR 403: Forbidden'
Posted
技术标签:
【中文标题】wget 的替代方案给出 \'ERROR 403: Forbidden\'【英文标题】:Alternatives for wget giving 'ERROR 403: Forbidden'wget 的替代方案给出 'ERROR 403: Forbidden' 【发布时间】:2016-08-29 12:59:43 【问题描述】:我正在尝试使用 wget 从多篇 Pubmed 论文中获取文本,但似乎 NCBI 网站不允许这样做。有其他选择吗?
Bernardos-MacBook-Pro:pangenome_papers_pubmed_result bernardo$ wget -i ./url.txt
--2016-05-04 10:49:34-- http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4560400/
Resolving www.ncbi.nlm.nih.gov... 130.14.29.110, 2607:f220:41e:4290::110
Connecting to www.ncbi.nlm.nih.gov|130.14.29.110|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.
--2016-05-04 10:49:34-- http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4547177/
Reusing existing connection to www.ncbi.nlm.nih.gov:80.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.
【问题讨论】:
【参考方案1】:像这样设置自定义用户代理:
wget --user-agent="Mozilla" http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4560400/
【讨论】:
@sherrellbc 我认为它是服务器上的某种“bot blocker”插件,IMO 是个坏主意。仅供参考,我昨晚注意到像这样的短用户代理不能像完整的、更完整的用户代理那样工作。不确定这个问题有多普遍,但坦率地说,服务器如此挑剔很烦人。 你可以放任何你想要的用户代理,网络服务器上有一些过滤可以“防止”抓取【参考方案2】:我在尝试使用 wget 从 Github 下载文件时收到“ERROR 403: Forbidden”(重定向到 s3.amazonaws.com实际上)。但它只发生在使用时:
wget -N / --timestamping
这会尝试下载远程文件 - 仅当它比文件的本地副本更新时。
显然,AWS S3 禁止了时间戳检查。 删除 -N 标志已解决。
请注意,您还可以通过使用-O / --output-document=FILE
或使用-P / --directory-prefix=PREFIX
下载到不同的目录(尚不包含该文件)来避免时间戳检查。
【讨论】:
以上是关于wget 的替代方案给出 'ERROR 403: Forbidden'的主要内容,如果未能解决你的问题,请参考以下文章
ERROR 403: SSL is required的解决方案