gpt4 book ai didi

ssl - 特定网站 SSL 证书的奇怪 CURL 问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:09 25 4
gpt4 key购买 nike

我正在尝试使用 CURL 从 paricualr 网站获取网页,但出现此错误:

curl -q -v -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://www.saiglobal.com/ --output ./Downloads/test.html
....
* SSL certificate verify ok.
} [5 bytes data]
> GET / HTTP/1.1
> Host: www.saiglobal.com
> User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
> Accept: */*
>
0 0 0 0 0 0 0 0 --:--:-- 0:11:53 --:--:-- 0* OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
* stopped the pause stream!
0 0 0 0 0 0 0 0 --:--:-- 0:11:53 --:--:-- 0
* Closing connection 0
} [5 bytes data]
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104

我不确定发生了什么。我找不到很多关于错误消息的有用信息。在我的 Mac 上,errorno 是 60 而不是 104。

但是,在这些机器上使用 Chrome 可以毫无问题地加载页面。其中一台机器的 CURL 版本是 7.58.0。

感谢任何帮助。

最佳答案

问题不是这个站点的证书。从调试输出中可以清楚地看到,TLS 握手已成功完成,在握手之外,证书无关紧要。

但是,可以看出站点www.saiglobal.com 是受Akamai CDN 和Akamai 保护的CDN features some kind of bot detection :

$ dig www.saiglobal.com
...
www.saiglobal.com. 45 IN CNAME www.saiglobal.com.edgekey.net.
www.saiglobal.com.edgekey.net. 62 IN CNAME e9158.a.akamaiedge.net.

已知此 bot 检测使用一些启发式方法来区分 bot 和普通浏览器,并且检测到 bot 可能会导致状态代码 403 访问被拒绝或导致站点简单挂起 - 请参阅 Scraping attempts getting 403 errorRequests SSL connection timeout .

在这种特定情况下,如果添加一些特定的 HTTP header 目前似乎有帮助,特别是 Accept-EncodingAccept-LanguageConnection 具有 keep-aliveUser-Agent 的值,它以某种方式匹配 Mozilla。未能添加这些 header 或具有错误的值将导致挂起。

以下目前对我有效:

$ curl -q -v \
-H "Connection: keep-alive" \
-H "Accept-Encoding: identity" \
-H "Accept-Language: en-US" \
-H "User-Agent: Mozilla/5.0" \
https://www.saiglobal.com/

请注意,这是故意试图绕过机器人检测。如果 Akamai 对机器人检测进行更改,它可能会停止工作。

另请注意,网站所有者出于某种原因明确启用机器人检测。这意味着,如果为了自己的利益而故意绕过检测(例如根据抓取的信息提供某些服务),您可能会遇到法律问题。

关于ssl - 特定网站 SSL 证书的奇怪 CURL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53810155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com