ブラウザ以外のクライアントではサイトにアクセスできませんが、Webブラウザを使用してアクセスできます。

ブラウザ以外のクライアントではサイトにアクセスできませんが、Webブラウザを使用してアクセスできます。

Webブラウザを使用してWebサイトを閲覧できます。ただし、カールを使用してGET要求を試みると中断されます。たとえば、コマンドがcurl -vL my_url次のログに停止しました。

* Host $url:443 was resolved.
* IPv6: ***
* IPv4: ***
*   Trying ***:443...
* Connected to $url (***) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Unknown (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / [blank] / UNDEF
* ALPN: server accepted http/1.1
* Server certificate:
*  subject: C=**; ST=***; L=***; O=***; CN=***
*  start date: Nov 17 05:09:32 2023 GMT
*  expire date: Nov 17 14:59:59 2024 GMT
*  subjectAltName: host "***" matched cert's "***"
*  issuer: C=**; O=***; CN=***
*  SSL certificate verify ok.
*   Certificate level 0: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 1: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type ? (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* using HTTP/1.x
> GET / HTTP/1.1
> Host: ***
> User-Agent: curl/8.6.0
> Accept: */*
> 
* old SSL session ID is stale, removing

その理由は何ですか?申し訳ありません。ウェブサイトのアドレスを公開できません。上記の内容がある程度明らかになることを願っています。ブラウザにすべてのリクエストヘッダを追加しようとしましたが、動作は変わりませんでした。

DNS ルックアップには、次の情報が表示されます。

*** is an alias for ***.edgekey.net.
***.edgekey.net is an alias for ***.akamaiedge.net.
***.akamaiedge.net has address ***
***.akamaiedge.net has IPv6 address ***
***.akamaiedge.net has IPv6 address ***

編集:追加調査の結果、カールだけでなく、私が試したすべての非ブラウザクライアント(SSL証明書を取得するための郵便配達、カール、wget、openssl s_client)がタイムアウトしました。ページを取得するためにブラウザと同様に、カール/郵便配達と同じ要求ヘッダーを試してみましたが、成功しませんでした。

答え1

他の人が指摘したように、ウェブサイトのrobots.txtにこの内容があることを確認してください。

User-Agent: curl
Disallow: /

そこにいる場合、その特定のウェブサイトでカールを使用することはできません

それならこの仕事はできない。どの待つ

User-agent: *
Disallow: /

検索するには、URLの後に/ robots.txtと入力してください。example.com/robots.txt

答え2

次のヘッダーを追加してカール要求が機能するようにしました。これらはすべて必要であり、User-Agentヘッダーだけでは不十分です。

> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0
> Accept-Language: en-US,en;q=0.5
> Accept-Encoding: gzip, deflate, br
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

ブラウザ開発者コンソールの[ネットワーク]タブにあるリクエストヘッダーを見ると、これがわかります。

Acceptヘッダーは単にAccept: */*

答え3

私がフォローしているサイトにも同じ問題があります(だから私は最初にあなたに質問をしました。)。奇妙なことは、私がこのサイトをcurl何年も問題なくフォロー(使用)してきたことです。しかし今、これが「問題」になりました!おそらくこれ傾向

とにかく - あなたの質問を読んだ後、私に適した解決策を見つけました。lynx-「コマンドライン」ブラウザ。lynxオプションが多いので、読書man lynxなどに時間を投資することをお勧めします。私に役立つのは次のとおりです。

lynx -dump -accept_all_cookies 'https://wherever.com/viewtopic.php?t=abc123' > my-dump.txt

関連情報