2010-02-01 3 views
13

CURL을 사용하여 URL (HEAD 요청)을 확인하고 있지만 www.google.com으로 테스트하면 나를 리디렉션합니다. www.google.co.uk - 아마도 내 서버가 영국 기반이기 때문일 수 있습니다.CURL www.google.com 어떻게해야합니까? .co.uk로 리디렉션합니다.

이 문제를 방지 할 수있는 방법이 있습니까? CURLOPT_FOLLOWLOCATION 옵션을 제거하고 싶지 않습니다. 301 리디렉션 등에 유용합니다.

일부 코드는 아래에 있습니다.

$ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 4); 

    $output = curl_exec($ch); 

    // get data  
$data = curl_getinfo($ch); 

$data['url'] 내가 www.google.com

+2

@Webbo - 당신이 팀의 대답을 받아 들였다는 것을 알고 있지만 그것을 할 수있는 방법이 있습니다 (제 대답 참조). –

+0

감사합니다, 당신은 매일 뭔가를 배웁니다! –

+2

와우,이 사이트는 대단합니다, 모두에게 감사합니다! –

답변

13

브라우저에서 비슷한 동작을 시뮬레이트하는 쿠키가있는 컬을 사용해야합니다.

영국에서 google.com을 방문하면 google.co.uk로 리디렉션되지만 google.com으로 돌아가서 거기에 머무르는 'google.com으로 이동'이라는 링크가 있습니다. . 쿠키를 사용하여 사이트 환경 설정을 기억합니다.

예를 들어, 여기에 내가 (파이어 폭스를 사용)이 작업을 수행 한 후이 쿠키 있습니다

alt text

+0

+1하면 google.com으로 다시 이동합니다. 이제 그는 CURL과 함께 사용할 쿠키를 알아 내야 만합니다. – FrustratedWithFormsDesigner

+0

그는 둘 다 사용할 수 있습니까? – Yoni

+0

환호 Yoni - 당신의 대답은 더 직접적인 것처럼 보입니다! –

0

직접 www.google.co.uk 사용할 수 있습니다, 거기의 차이로 $url을 설정할 때 www.google.co.uk이 포함되어 있습니다. google.com/.net은 항상 사용자의 위치로 리디렉션하지만 .co.uk와 같은 국가 TLD를 사용하는 경우 리디렉션되지 않습니다.

.com 또는 .net을 사용할 때 리디렉션을 방지 할 방법이 없습니다.

12

www.google.com/ncr 접근 시도를, 그것은 .co.uk에서의 리디렉션을 방지 (또는 것 기타 국가) 페이지.

+0

신나는 시작 페이지가 될 것입니다. –

0

한 가지 방법은 다른 IP 주소를 설정하는 것입니다. 그냥 웹에서 많은 미국 프록시 서버 중 하나를 얻을 같은 것을 할 :

$ch=curl_init(); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_FOLLOWLOCTION,1); 
curl_setopt($ch,CURLOPT_PROXY,"8.12.33.159"); 
curl_setopt($ch,CURLOPT_PROXYPORT,"80"); 
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"); 
curl_setopt($ch,CURLOPT_URL,$URI); 
$results=curl_exec($ch); 
curl_close($ch); 

이 방법, Google은 미국의 IP 주소를 형성하고 로컬 Google로 리디렉션되지 올 생각합니다.

0

당신은 컬에서 다음과 위치를 해제해야합니다 (false로 설정)하고 더 이상 리디렉션되지 않습니다 ...

 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
4

또 다른 옵션은 단순히 encrypted.google.com 사용하는 것입니다. 그건 리디렉션되지 않습니다.

관련 문제