2017-10-26 1 views
0

TL;PHP - 리디렉션을 수행 할 때 cURL을 'AUTOREFERER'로 설정해야합니까?

DR해야 또는 는 내 컬 함수 CURLOPT_AUTOREFERER => true 설정하지한다 (즉 리디렉션 제한된 수 이하) 왜?

다음 (어) 버전 나는 주어진 URL의 헤더를 반환 꽤 표준 컬 기능이

, 최대 10 리디렉션 ...

const SINGLETIMEOUT = 8; // Seconds (is this too long?) 

public static function getHeaders($url, $userAgent) { 
    // Initialize cURL object 
    $curl = curl_init($url); 

    // Set options 
    curl_setopt_array($curl, array(
     CURLOPT_USERAGENT => $userAgent, 

     CURLOPT_HEADER => true, 
     CURLOPT_NOBODY => true, 

     CURLOPT_RETURNTRANSFER => true, 

     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_MAXREDIRS => 10, 
     CURLOPT_AUTOREFERER => true, 

     CURLOPT_TIMEOUT => SINGLETIMEOUT, // 5 seconds (safety!) 
     CURLOPT_CONNECTTIMEOUT => SINGLETIMEOUT 
    )); 

    // Run it 
    curl_exec($curl); 

    // Get headers 
    $headers = curl_getinfo($curl); 

    // Close it 
    curl_close($curl); 

    return $headers; 
} 

기능 getHeaders은 예상대로 정확하게 작동합니다. 그러나 지금까지 테스트 한 결과 CURLOPT_AUTOREFERER => true을 포함하든 아니든간에 성능이나 결과에는 차이가 없습니다. CURLOPT_AUTOREFERER입니다.하지만 그 이상의 특정 옵션에 대해서는 자세히 알 수 없습니다.

좋아, 그래서 설정``

뜻이 ... 자동으로 리퍼러 설정 : 그래서

리디렉션 : 그것은 위치를 다음과 HTTP 요청의 헤더 필드를? 왜이 문제가 중요합니까? 내가 그걸 보관하거나 토스해야합니까? 일부 URL에서 결과가 달라질 수 있습니까? 일부 도메인은 빈 사용자 에이전트를 보낼 때와 마찬가지로 잘못된 헤더를 반환합니까?

그리고에, 그리고에 ... 예제

대부분의 나는이 기능을 포함하지 않았다 만들 발견 -하지만 그들은 또한 내가 포함하고있어 다른 대부분의 옵션을 포함하지 않았다 .

+1

모든 개발자는 쉽게 스푸핑 되었기 때문에 리퍼러를 무시하도록 훈련했기 때문에 일반적으로 의미가 없습니다. 비록 무시되지 않더라도 일반적으로 분석에 사용되므로 원격 사이트에서 사용자가 어디서 왔는지 알 수 있도록할지 여부는 사용자의 몫입니다. – apokryfos

+0

@apokryfos는 자세한 답변을 주셔서 감사합니다. 매우 감사! 제발 대답 해주세요. 전리품은 당신 것입니다! – Birrel

답변

1

좋아 몇 가지 기본 정보 : 위키 피 디아에 따르면

는 HTTP 리퍼러 (리퍼러 원래 맞춤법)

는 웹 페이지의 주소 (즉, URI 또는 ​​IRI)를 식별하는 HTTP 헤더 필드입니다 요청 된 자원에 링크되어 있습니다. 리퍼러를 확인하면 새 웹 페이지에서 요청의 출처를 확인할 수 있습니다. 가장 일반적인 상황은 사용자가 웹 브라우저에서 하이퍼 링크를 클릭하면 브라우저가 대상 웹 페이지를 보유한 서버에 요청을 보내는 것을 의미합니다. 요청에는 사용자가 있었던 마지막 페이지 (링크를 클릭 한 페이지)를 나타내는 referer 필드가 포함됩니다. Referer 로깅은 웹 사이트 및 웹 서버가 홍보 또는 통계 목적으로 방문자를 어디에서 방문했는지 식별 할 수있게합니다.

그러나 여기에 중요한 세부 사항이 있습니다. 이 헤더는 클라이언트가 제공하며 클라이언트는이를 제공 할 것인지 선택할 것인지 선택할 수 있습니다. 또한 클라이언트가이를 제공하기로 선택하면 클라이언트는 원하는 모든 값을 제공 할 수 있습니다.

이 개발자는 개발자가 통계 대신 다른 값으로 얻는 리퍼러 값에 의존하지 않는다는 것을 알았습니다. 왜냐하면 얼마나 쉽게 스푸핑 될 수 있기 때문입니까 (원하는 경우 cURL 호출에서 직접 리퍼러 헤더를 설정할 수 있습니다. CURLOPT_AUTOREFERER 사용).

크롤러 또는 cURL을 사용할 때 일반적으로이를 제공하는 것은 중요하지 않습니다. 원거리 사이트가 당신이 어디서 왔는지 알려주고 싶다면 당신에게 달려 있습니다. 어느 쪽이든 여전히 작동해야합니다.

리퍼러를 기반으로 한 사이트가 다른 결과를 제시하는 것은 불가능하다고 말하면서, 예를 들어 추가 사이트 내 검색 결과를 제공하기 위해 리퍼러가 Google인지 여부를 확인하는 사이트를 보았지만 이것은 예외이며 규칙이 아니며 어쨌든 사이트를 항상 사용할 수 있어야합니다.

관련 문제