2016-06-15 2 views
-2

를 반환 (예 https://www.facebook.com); PHP를 사용하여 매일 브라우저에서 수행하는 것과 비슷합니다.PHP :이 gethostbyaddr() 나는 시도하고 절대 URL로 (에서 facebook.com 입력 예를 들어) 모호한 URL을 해결하기 위해 PHP 스크립트를 일하고 있어요 잘못된 URL

은 지금까지 나는 다음과 같은 코드가있어이 작동 IPv4 주소를 제공

$link = gethostbyname("facebook.com"); 

을, 그러나 나는 역방향 조회를 할 때 사용 :

$link2 = gethostbyaddr($link); 

내가 기대하고있어 "https://www.facebook.com"과 같은 올바른 URL을 수신하지만 대신 ''edge-star-mini-shv-13-atn1.facebook.com ''과 같은 가비지가 발생합니다.

이렇게하면 fopen 또는 curl 해보려고 웹 페이지의 내용을 읽으십시오.

여기에 무엇이 잘못되었으며 어떻게 해결할 수 있는지 설명 할 수 있습니까?

편집 :이 보안 HTTP (HTTPS) 함께 할 수있는 뭔가하지 그래서, "google.co.uk"반환 " 'lhr25s10-in-f3.1e100.net'"와 같은 안전하지 않은 URL을 시도

+0

@ C0dekid - 예. "google.co.uk"은 "lhr25s10-in-f3.1e100.net"을 제공하며 보안 성이 전혀 없습니다 – Raisus

+0

호스트는이 IP가 호스팅되는 도메인입니다. GeoIP 도구를 사용하여 직접보십시오. Hostbyaddr는 웹 사이트 링크가 아닙니다. PHP.net에 따라 – Jer

+0

은 (http://php.net/manual/en/function.gethostbyaddr.php은)는 – Raisus

답변

0

gethostbyaddr은 IP 주소에 대해 URL이 아닌 호스트 이름을 가져옵니다.

하나의 IP 주소에 여러 호스트 이름을 할당 할 수 있습니다.

gethostbyaddr는 기본 하나를 얻을 것이다.

해당 IP 주소에서 수신 대기하는 HTTP 서버는 모든 호스트 이름에 대한 요청을 처리합니다.

HTTP 요청은 당신이 요구하는 스트 이름을 지정합니다 Host라는 요청 헤더가 포함되어 있습니다.

HTTP 서버는 헤더에주의를 지불하고 다른 호스트 이름에 대해 서로 다른 컨텐츠를 제공 할 수 있습니다. 이렇게하면 여러 웹 사이트를 단일 IP 주소에서 호스팅 할 수 있습니다. 이것은 IPv4 주소가 제한적이며 많은 웹 사이트가 있기 때문에 매우 유용합니다.

당신은 facebook.com를 호스팅하는 컴퓨터에 대한 기본 호스트 이름을 받고 있지만, 웹 서버는 해당 호스트 이름에서 원하는 웹 사이트를 호스팅하지 않습니다.

+0

Ah에서 주소, IP, 이름 및 서버 모음의 매우 한정되고 깨끗한 정리 된 버전 만 제공합니다. 내가 참조. 대신 웹 사이트를 검색하는 데 사용할 것을 권장합니까? 답을 편집하여이를 포함시킬 수 있다면 받아 들일 것입니다. – Raisus

+0

(웹 사이트를 호스팅하는 컴퓨터의 IP 주소 대신) 처리하려는 웹 사이트의 URL을 알고 시작하기 만하면됩니다. 즉 질문에서하는 모든 일을 절대적으로 건너 뛸 수 있습니다. – Quentin

+0

하지만 그건 브라우저가하는 방식이 아닙니다. 브라우저가 의도를 해석하기 위해 정확한 URL을 알 필요가 없습니다. – Raisus