브라우저가 아닌 클라이언트에서는 사이트에 접속할 수 없지만 웹 브라우저를 사용하여 접속할 수 있습니다.

브라우저가 아닌 클라이언트에서는 사이트에 접속할 수 없지만 웹 브라우저를 사용하여 접속할 수 있습니다.

웹 브라우저를 사용하여 웹사이트를 탐색할 수 있습니다. 그러나 컬을 사용하여 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

관련 정보