【问题标题】:Strange CURL issue with a particular website SSL certificate特定网站 SSL 证书的奇怪 CURL 问题
【发布时间】:2018-12-17 06:49:02
【问题描述】:

我正在尝试使用 CURL 从一个特定的网站获取网页,但是它给出了这个错误:

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。

感谢任何帮助。

【问题讨论】:

  • ".... 使用特定网站 SSL 证书" - 问题不在于 SSL 证书。 SSL 握手(这是唯一涉及证书的部分)在站点上成功完成,并且该错误仅在稍后发生。错误 104 是连接重置,即服务器出于某种未知原因关闭了连接。
  • 谢谢,我也这么认为,并尝试使用 Google Bot 用户代理看看是否会有所作为。

标签: ssl curl


【解决方案1】:

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

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

$ 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 error 或 @987654323 @。

在这种特定情况下,如果添加一些特定的 HTTP 标头,特别是 Accept-Encoding、Accept-Language、Connection,其值为 keep-alive 和 User-Agent,这似乎会有所帮助,它们以某种方式匹配 Mozilla。未能添加这些标头或具有错误的值将导致挂起。

以下对我有用:

$ 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 对机器人检测进行更改,它可能会停止工作。

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

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 2020-09-20
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2022-01-26
    相关资源
    最近更新 更多