>  기사  >  백엔드 개발  >  PHP를 사용하여 로그인을 시뮬레이션하고 액세스하려면 로그인이 필요한 웹사이트를 크롤링하세요.

PHP를 사용하여 로그인을 시뮬레이션하고 액세스하려면 로그인이 필요한 웹사이트를 크롤링하세요.

WBOY
WBOY원래의
2023-06-13 12:21:172414검색

인터넷이 발전하면서 점점 더 많은 웹사이트에서 데이터에 액세스하려면 로그인이 필요합니다. 이는 이 데이터를 사용해야 하는 일부 프로그래머나 연구자에게는 어려운 일이 됩니다. 이 기사에서는 PHP를 사용하여 로그인을 시뮬레이션하고 액세스하려면 로그인이 필요한 웹 사이트를 크롤링하는 방법을 소개합니다.

시뮬레이션 로그인이란 무엇인가요?

로그인 시뮬레이션이란 브라우저를 사용하여 수동으로 로그인하는 것이 아니라 로그인 후 데이터를 얻기 위해 코드를 통해 로그인 작업을 시뮬레이션하는 것을 의미합니다. 이렇게 하면 자주 로그인 액세스가 필요한 상황에서 많은 시간과 노력을 절약할 수 있습니다.

PHP를 사용한 로그인 시뮬레이션 단계

PHP를 사용한 로그인 시뮬레이션을 시작하기 전에 몇 가지 기본 개념과 단계를 이해해야 합니다.

  1. 로그인 페이지 가져오기

먼저 로그인 페이지의 URL 주소를 가져와야 합니다. 브라우저의 개발자 도구를 사용하여 로그인 양식의 작업 및 메서드 속성을 볼 수 있습니다. 이러한 속성은 양식 제출의 대상과 방법을 알려줍니다. 또한 브라우저에서 직접 로그인 페이지에 액세스한 다음 페이지 소스 코드를 보고 로그인 양식에 대한 관련 정보를 얻을 수도 있습니다.

  1. 로그인 양식 분석

다음으로 로그인 양식의 각 필드를 분석해야 합니다. 양식 요소의 이름 속성을 살펴보면 양식에 제출해야 하는 데이터가 무엇인지 결정할 수 있습니다. 성공적으로 로그인하려면 제출해야 하는 필드와 해당 값을 명확하게 식별해야 합니다.

  1. 로그인 요청 보내기

로그인 양식을 제출하기 전에 HTTP 요청을 생성해야 합니다. PHP의 컬 기능을 사용하여 HTTP 요청을 보내는 브라우저를 시뮬레이션하는 동시에 로그인 양식 데이터를 POST 매개변수로 서버에 전달할 수 있습니다. 여기서는 User-Agent 및 Referer와 같은 일부 특수 요청 헤더 정보에 주의를 기울여야 합니다.

  1. 로그인 결과 확인

마지막으로 로그인 성공 여부를 확인해야 합니다. HTTP 응답 코드를 확인하여 로그인 성공 여부를 확인할 수 있습니다. 일반적으로 로그인에 성공하면 서버는 302 상태 코드를 반환하고 우리가 액세스하려는 페이지로 리디렉션됩니다. 로그인에 실패하면 서버는 401(승인되지 않음) 또는 403(금지됨) 상태 코드를 반환합니다.

특정 작업

위의 기본 개념을 이해하면 실제 작업을 시작할 수 있습니다.

  1. 로그인 페이지 가져오기

Zhihu 웹사이트를 예로 들어 먼저 로그인 페이지의 URL을 가져와야 합니다.

$url = 'https://www.zhihu.com/signin';
  1. 로그인 양식 분석하기

다음으로 Zhihu의 로그인 양식을 분석해야 합니다. 브라우저 개발자 도구를 통해 양식 요소의 이름 속성을 볼 수 있습니다.

<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="_xsrf" value="xxxxxx" />

위 코드를 보면 로그인 양식에 제출해야 하는 필드에 사용자 이름과 비밀번호는 물론 임의의 문자열 _xsrf가 포함되어 있음을 알 수 있습니다. 이 임의 문자열은 CSRF 공격을 방지하기 위해 추가됩니다.

  1. 로그인 요청 보내기

위의 정보를 사용하여 로그인 작업을 시뮬레이션하는 HTTP 요청을 구성할 수 있습니다.

$url = 'https://www.zhihu.com/login/phone_num';
$data = array(
    'phone_num' => 'your_phone_number',
    'password' => 'your_password',
    '_xsrf' => 'xxxxxx'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36', 
    'Referer: https://www.zhihu.com/signin'
));
$response = curl_exec($ch);
curl_close($ch);

echo $response;

위 코드에서는 컬 함수를 사용하여 제출할 데이터, 요청 헤더 정보 및 쿠키 정보를 포함하는 POST 요청을 구성합니다. 그 중 COOKIEJAR와 COOKIEFILE은 나중에 로그인이 필요한 페이지에 접속할 때 사용할 수 있도록 쿠키 정보를 저장하는 데 사용됩니다. HTTP 요청 헤더 위장의 경우 개발자 도구에서 찾을 수 있습니다.

  1. 로그인 결과 확인

로그인에 성공하면 서버는 로그인이 필요한 홈페이지나 기타 페이지로 리디렉션해야 합니다. HTTP 응답 코드를 보면 로그인 성공 여부를 확인할 수 있습니다.

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code == 302) {
    echo '登录成功!';
} else {
    echo '登录失败!';
}

요약

이 글에서는 PHP를 사용하여 로그인을 시뮬레이션하고 로그인이 필요한 웹사이트를 크롤링하는 방법을 소개합니다. 모의 로그인에는 개인정보 유출, IP 차단 등의 위험이 있다는 점에 유의하시기 바랍니다. 따라서 이를 사용할 때 대상 웹사이트의 크롤러 전략을 완전히 이해하고 관련 법률 및 규정을 준수하며 개인정보와 권리를 보호해야 합니다.

위 내용은 PHP를 사용하여 로그인을 시뮬레이션하고 액세스하려면 로그인이 필요한 웹사이트를 크롤링하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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