소개
인터넷의 빠른 발전으로 빅 데이터에 대한 수요가 증가하고 있습니다. 웹 페이지 정보를 자동으로 크롤링하기위한 중요한 도구 인 웹 크롤러는 데이터 수집에 널리 사용됩니다. 그러나 트래픽 압력 및 데이터 보안 위험에 직면하여 많은 웹 사이트가 검증 코드, IP 제한 및 계정 로그인 검증과 같은 다양한 방지 메커니즘을 배포하여 크롤러 개발의 어려움을 크게 증가 시켰습니다. 이 기사는 PHP 언어와 오픈 소스 프레임 워크 Phpspider를 결합하여 이러한 방지 방지 블록을 처리하기위한 효과적인 방법을 소개합니다.
1. 일반적인 항-크롤러 메커니즘의 분석
1. 확인 코드
검증 코드는 사용자가 왜곡 된 문자 나 이미지를 표시하여 신원을 확인하기 위해 올바른 컨텐츠를 입력해야합니다. 크롤러의 자동 식별에 큰 도전을 제시합니다. 오픈 소스 Tesseract OCR과 같은 OCR 기술을 사용하여 사진을 텍스트로 변환하고 자동으로 식별하고 작성하여 검증 코드를 크래킹 할 수 있습니다.
2. IP 제한
단일 IP의 자주 액세스가 크롤러로 식별되는 것을 방지하기 위해 웹 사이트는 IP 요청의 빈도를 제한합니다. 프록시 서버를 사용하여 IP 주소를 회전하면 여러 액세스 소스를 시뮬레이션 할 수 있으며 IP 차단을 효과적으로 우회 할 수 있습니다.
3. 계정 로그인
일부 웹 사이트는 로그인 한 사용자를 특정 데이터에 액세스하도록 제한합니다. Crawler는 로그인 프로세스를 시뮬레이션하고 로그인 후 데이터 크롤링을 실현하여 액세스 제한을 피하기 위해 사용자 이름과 비밀번호를 자동으로 작성합니다.
2. phpspider를 사용하여 차단 메커니즘을 깨뜨립니다
PhpsPider는 PHP를 기반으로 한 오픈 소스 크롤러 프레임 워크입니다. 풍부한 기능이 있으며 검증 코드 인식, 시뮬레이션 된 로그인 및 프록시 스위칭을 지원하여 크롤링 효율성과 성공률을 크게 향상시킵니다.
1. 검증 코드 처리 예제
Phantomjs 및 PhpsSpider를 통합하면 웹 페이지의 스크린 샷을 찍고 확인 코드 사진을 저장 한 다음 OCR 도구를 사용하여 그림에서 확인 코드 텍스트를 식별하고 자동 충전을 완료 할 수 있습니다. 샘플 코드는 다음과 같습니다.
require 'vendor/autoload.php';
<p>use JonnyWPhantomJs\Client;</p>
<p>$client = Client::getInstance();<br>
$client->getEngine()->setPath('/usr/local/bin/phantomjs');</p>
<p>$request = $client->getMessageFactory()->createCaptureRequest('<a rel="noopener" target="_new" class="" href="http://www.example.com">http://www.example.com</a>');<br>
$request->setViewportSize(1024, 768)->setCaptureFormat('png');</p>
<p>$response = $client->getMessageFactory()->createResponse();<br>
$client->send($request, $response);</p>
<p>if ($response->getStatus() === 200) {<br>
$response->save('example.png');<br>
}
위의 코드는 웹 페이지 스크린 샷을 저장 한 다음 OCR을 사용하여 그림을 구문 분석하여 확인 코드의 자동 식별을 실현합니다.
2. 로그인 구현 시뮬레이션
GuzzleHTTP 라이브러리를 사용하여 게시물 요청을 보내고, 로그인 양식 제출을 시뮬레이션하고, 자동 로그인을 실현하고, 성공적인 로그인 후 제한된 데이터에 액세스하십시오. 샘플 코드는 다음과 같습니다.
require 'vendor/autoload.php';
<p>use GuzzleHttp\Client;</p>
<p>$username = 'your_username';<br>
$password = 'your_password';</p>
<p>$client = new Client();</p>
<p>$response = $client->post('<a rel="noopener" target="_new" class="" href="http://www.example.com/login">http://www.example.com/login</a>', [<br>
'form_params' => [<br>
'username' => $username,<br>
'password' => $password,<br>
]<br>
]);</p>
<p>if ($response->getStatusCode() === 200) {<br>
$response = $client->get('<a rel="noopener" target="_new" class="" href="http://www.example.com/data">http://www.example.com/data</a>');<br>
$data = $response->getBody();<br>
echo $data;<br>
}
로그인 한 후 크롤러는 일반 사용자와 같은 제한된 컨텐츠에 액세스하여 데이터 크롤링을 달성 할 수 있습니다.
요약
크롤링 방지 메커니즘에 대한 깊은 이해와 phpspider의 기능을 결합하면 검증 코드, IP 제한 및 로그인 인증을 효과적으로 피하고 크롤러의 안정성과 효율성을 향상시킬 수 있습니다. 개발 과정에서 우리는 항상 대상 웹 사이트의 사용 사양을 준수하고, 합리적이고 합법적으로 데이터를 수집하며, 다른 사람의 권리와 이익에 대한 침해를 피해야합니다. 크롤러 도구를 올바르게 사용하면 데이터 수집을 강력하게 향상시킬 수 있습니다.