>백엔드 개발 >PHP 튜토리얼 >내 웹사이트 스크레이퍼가 원격 서버에서 `file_get_contents()`와 함께 403 금지 오류를 반환하는 이유는 무엇입니까?

내 웹사이트 스크레이퍼가 원격 서버에서 `file_get_contents()`와 함께 403 금지 오류를 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-26 18:04:03403검색

Why is My Website Scraper Returning a 403 Forbidden Error with `file_get_contents()` on Remote Servers?

file_get_contents()의 403 Forbidden 오류

웹사이트 스크래퍼를 개발하려는 시도 중 개발자가 원격에서 403 Forbidden 오류를 발견했습니다. 로컬 컴퓨터에서 문제 없이 file_get_contents()를 사용하는 동안 서버. 오류 메시지는 HTTP 요청이 실패했음을 나타냅니다.

검사 결과 php.ini 구성 파일의 허용_url_fopen 설정이 활성화된 것으로 확인되어 추가 솔루션을 검색하게 되었습니다. 오류 원인에 대한 통찰력을 얻으려면 PHP의 디버깅 메커니즘을 권장합니다.

구체적으로 $http_response_header 변수는 각 file_get_contents() 호출 후에 응답 HTTP 헤더를 제공할 수 있습니다. 또한,ignore_errors 컨텍스트 옵션은 실제 응답을 반환하여 잠재적으로 403 오류를 설명할 수 있습니다.

실제 분석에 따르면 오류는 Referer 또는 User-Agent와 같은 필수 HTTP 헤더 누락으로 인해 발생할 수 있습니다. 이 문제를 해결하기 위해 stream_context_create()를 사용하여 사용자 에이전트를 설정하고 실제 브라우저 요청을 시뮬레이션하는 사용자 정의 컨텍스트를 생성할 수 있습니다.

$context = stream_context_create(
    array(
        "http" => array(
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        )
    )
);

echo file_get_contents("www.google.com", false, $context);

이 코드 예제는 사용자 에이전트를 설정하고 Google에 요청을 보내는 방법을 보여줍니다. , 효과적인 웹 스크래핑을 위해 헤더를 조작하는 방법을 보여줍니다.

위 내용은 내 웹사이트 스크레이퍼가 원격 서버에서 `file_get_contents()`와 함께 403 금지 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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