IP로 웹 사이트의 서브 페이지에 액세스


2

CURL을 사용하여 웹 사이트에서 데이터를 긁어내는 PHP 응용 프로그램을 작성 중입니다. 그러나 컬이있는 웹 사이트를로드하는 데 걸리는 시간은 매우 느립니다. Chrome에서 스프레드 시트 및 이미지와 같은 다른 많은 것들을로드하지만 PHP 애플리케이션은 그렇지 않지만 Chrome에로드하는 데 걸리는 시간보다 훨씬 느립니다.

어쨌든 curl이 DNS 조회에 문제가있어서 IP로 액세스하는 것이 훨씬 빠를 수 있다는 것을 읽었습니다.

그러나 어떻게 해야할지 모르겠습니다.

예를 들어 구글을 보자. 명령 프롬프트를 열고 "ping www.google.com"을 수행 할 수 있습니다. 다음과 같이 답변합니다.

Pinging www.google.com [74.125.232.114] with 32 bytes of data...

따라서 해당 IP 주소를 사용할 수 있지만 작동하지만 예를 들어 www.google.com/doodles에 액세스하려면 어떻게해야합니까?

핑 (ping) 할 때 해당 주소를 입력하려고하면 호스트를 찾을 수 http://74.125.232.114/doodles없으며 작동하지 않습니다.

(Error: Not Found The requested URL /doodles was not found on this server.)

IP로 어떻게 액세스합니까?

답변:


2

IP로 VirtualHost 기반 웹 사이트에 액세스하려고합니다. curl의 문제는 웹 서버에 액세스하려는 호스트 이름이 아니기 때문에 웹 서버는 어떤 페이지를 제공할지 알지 못합니다 (google.com은 gmail.com도 호스팅 할 수 있지만 무엇을 알지 못합니다 컬이 묻지 않기 때문에 줄 것입니다).

curl이 호스트 이름을 사용하도록하기 /etc/hosts위해 다음 정보를 사용 하여 파일을 수정할 수 있습니다.

74.125.232.114 google.com

(Windows에서는이 파일을에서 찾을 수 있습니다 C:\Windows\System32\Drivers\etc\hosts)

curl이 example.com에 요청을하게하면 OS는 /etc/hosts파일 에서 example.com을 찾아서 DNS 조회를 시도하지 않으며 훨씬 빠릅니다.


즉, DNS 설정을 수정하면 훨씬 좋습니다. /etc/resolv.conf제공 업체 (또는 Google 퍼블릭 DNS)의 네임 서버로 파일을 수정 해 보셨습니까?

nameserver 8.8.8.8
nameserver 8.8.4.4

1

DNS 응답 시간이 너무 크면 네트워크에서 DNS 설정을 수정해야합니다. /etc/resolv.conf이름 서버가 여전히 사용 가능한지 살펴보고 확인하십시오. 그렇지 않은 경우 작동하는 DNS 서버를 추가하십시오 (맨 위). 예를 들어 Google의 DNS 서비스를 사용할 수 있습니다.

nameserver 8.8.8.8

어떤 이유로 든 느린 DNS 서버가 필요한 경우, 응용 프로그램이 인터넷에서 사용할 수없는 내부 DNS 이름을 사용하고 있기 때문에 /etc/hosts파일을 수정 하고 호스트 이름을 추가 할 수 있습니다 74.125.232.114.

74.125.232.114 www.google.com

의 공통 설정을 /etc/nsswitch.conf사용하면 시스템은 /etc/hostsDNS 요청을 수행하기 전에를 사용합니다 .


0

-L을 사용하여 리디렉션 curl www.google.com으로 이동하십시오 (페이지가 이동되었다고 함).

그리고 IP를 통해 그것을 할 때 호스트 헤더가 채워지지 않는다고 언급되었습니다.

그렇다면 호스트 헤더를 지정하는 방법은 어떻습니까?

curl -L -H "호스트 : www.google.com"173.194.34.115/doodles

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.