PHP 코드로 일부 웹 페이지를 다운로드하려고합니다.
$context_params = array('http' => array('method' => 'GET',
'user_agent' => 'Mozilla/5.0',
'timeout' => 1,
'header' => "Accept-language: en".
"Cookie: site=blabla1234567cookie;
__cf=cookie12345678;
PHPSESSID=phpsessidcookie;"));
$context = stream_context_create($context_params);
$html = file_get_contents($url, FALSE, $context);
웹 서버는 쿠키를 확인하여 사용자를 확인합니다. 컨텍스트에 올바른 클라이언트 쿠키를 삽입했지만 PHPSESSID가 만료되면 (~ 1 시간?) file_get_contents가 빈 페이지를 반환합니다. 웹 브라우저에서 PHPSESSID 쿠키를 삭제하려고했는데 웹 페이지를로드하자마자 새로운 PHPSESSID 쿠키가 생성되었습니다. 다시 로그인 할 필요가 없었습니다. 그런 다음 스크립트에서 PHPSESSID 쿠키를 제거하려고 시도했지만 이제 file_get_contents가 빈 페이지를 반환합니다.
이 스레드 를 확인하려고했지만 어쨌든 도움이되지 않았습니다. 여전히 빈 페이지를 반환하고 스크립트에 session_id () 및 session_name ()을 삽입하자마자 print_r () / var_dump / echo로 컨텍스트 배열을 인쇄 할 수 없습니다. (너무 큰가요?)
session_write_close ()는 차이가 없습니다.
모든 쿠키를 제거하면 문제없이 페이지를로드하지만 로그인하지 않았습니다.
var_dump / echo로 빈 페이지에 대한 응답을 읽으려고했는데 둘 다 file_get_contents 바로 뒤에 $ http_response_header에서 BLANK를 반환합니다.
이론적으로 PHPSESSID는 원격 서버에서 생성되어 쿠키와 IP 주소에 따라 클라이언트로 전송 될 수 있습니다 (이는 내 컴퓨터에서 작동하는 이유를 설명하지만 내 VPS에서는 작동하지 않음). 그러나 PHPSESSID는 자신의 IP 주소와 관계없이 클라이언트 시스템에서 생성되어야하지 않습니까?
질문 : PHP 스크립트의 컨텍스트에 대한 새로운 올바른 PHPSESSID를 자동으로 생성 / 설정 / 갱신하려면 어떻게해야합니까?
편집 : file_get_contents를 사용하고 싶습니다. cURL 솔루션에는 전혀 관심이 없습니다.
해결책을 찾았습니다.
해결 방법 : 각 쿠키 끝에 \ r \ n을 추가하십시오. 그렇지 않으면 구조가 손상되고 원격 서버가 불평 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다