>백엔드 개발 >PHP 튜토리얼 >PHP의 HTTP_REFERER를 기반으로 한 안티 리칭 조치의 획기적인 stream_context_create

PHP의 HTTP_REFERER를 기반으로 한 안티 리칭 조치의 획기적인 stream_context_create

WBOY
WBOY원래의
2016-07-29 08:44:40880검색

따라서 안티 핫링크를 돌파하기 위한 조치를 고려한다면 HTTP_REFERER 조작을 고려해야 합니다. PHP 스크립트의 해당 변수는 $_SERVER['HTTP_REFERER']이며, 이는 HTTP_REFERER 값을 저장합니다.
위의 핫링크 방지 조치로 대상 URL 리소스에 대한 직접 액세스가 차단되었으므로 이를 얻으려면 게이트웨이와 유사한 것이 필요합니다. 직설적으로 말하면 HTTP 헤더를 래핑한 PHP 스크립트를 작성하는 것입니다.
다음은 간단한 함수 구현입니다.

코드 복사 코드는 다음과 같습니다.


function getRemoteFile($ url, $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
); 🎜>$context = stream_context_create($option);
return file_get_contents($url, false, $context);
}


이것은 비교적 간단한 함수입니다. 함수는 Referer를 위조하는 것입니다(stream_context_create 함수 사용). 그런 다음 상대방의 데이터를 가져옵니다(file_get_contents를 사용하고,allow_url_fopen을 활성화해야 합니다).

좀 더 "복잡하게" 만들고 싶다면 소켓 확장을 사용할 수 있습니다. 이는 여기서 논의할 범위를 벗어납니다.

추가로, 호스트 이름을 얻는 정규 함수를 제공하세요


코드 복사 코드는 다음과 같습니다.

function getHost($url) {
$result = preg_match('/^http://([d|w|.] )//', $url, $matches)
if (sizeof($matches ) >= 2) {
return $matches[1];
} else {
return null;
}
}

추가 확장은 스크립트로 캡슐화할 수 있으며, 예를 들어
http://127.0.0.1/proxy.php?url=http://i.am/img를 호출하여 안티-활성화 링크를 얻을 수 있습니다. 핫링크 조치(그런 다음 이를 사용하고 Javascript를 사용하여 모든 이미지 링크를 대체합니다).
위의 내용을 포함하여 PHP의 HTTP_REFERER 기반 핫링크 방지 수단인 stream_context_create를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.