크롤러 기술과 비교했을 때 안티 크롤러는 실제로 더 복잡합니다. 현재 많은 인터넷 회사들은 "크롤링 방지"를 위해 많은 노력을 기울이고 있습니다. 웹 크롤러는 웹 사이트 트래픽을 너무 많이 점유하여 실제 요구 사항이 있는 사용자가 웹 사이트에 접속하는 것을 방해할 뿐만 아니라 주요 웹 사이트 데이터가 유출될 수도 있습니다. 웹 크롤러는 인터넷 구석구석에서 발견되기 때문에 웹 크롤러에는 장점과 단점이 있습니다. 다음으로 웹 크롤러에서 탄생한 크롤러 방지 기술을 소개하겠습니다.
1. 프로그램 자체를 기반으로 한 크롤링 방지: 크롤링 동작은 페이지의 소스 파일을 크롤링하는 것입니다. 예를 들어 정적 페이지의 HTML 코드를 크롤링하려면 다음을 수행합니다. jquery를 사용하여 HTML 작성을 모방하세요. 이런 방식으로 위장한 페이지는 크롤링하기 어렵지만 이 방법은 프로그래머에게 높은 요구 사항을 부과합니다.
2. iptables 및 쉘 스크립트 기반: nginx의 access.log에 대한 정책을 정의할 수 있습니다. 예를 들어, ip가 1분에 30개를 초과하는 것은 불법입니다. 화이트리스트에 추가한 후 이를 차단하려면 iptables 정책을 추가하세요. 물론, 정책의 세분성이 작을수록 '우연한 부상'이 더 많이 발생한다는 단점이 있습니다. 유사한 제3자도 있습니다. 이 도구는 필터와 액터를 사용하여 일부 유해한 작업을 기록하거나 IP 주소를 차단합니다. 그러나 특정 크롤러 IP 주소를 정확하게 알 수 없기 때문에 특정 크롤러 주소(예: NetEase 및 Youdao)의 크롤링 동작을 정확하게 거부하는 것은 어렵습니다. 참고: IP 항목을 차단하는 방법을 사용하지 않는 것이 좋습니다. iptables 목록의 길이가 65535이면 가득 차서 서버가 충돌합니다.
3. robots.txt 파일을 사용합니다. 예를 들어 모든 크롤러가 크롤링하는 것을 방지하지만 이 효과는 그리 명확하지 않습니다.
User-agent: *
허용 안 함: /
4. nginx의 내장 기능 사용: GET/POST 메서드 요청을 포함하여 httpuseragent를 차단하여 구현 nginx를 예로 들면, 구체적인 단계는 다음과 같습니다:
nginx.conf 편집
wget 모드에서 httpuseragent를 거부하고 다음 콘텐츠를 추가하세요.
## http 사용자 에이전트 차단 - wget ##
if ($http_user_agent ~* (Wget) ) {
return 403;
}
## 소프트웨어 다운로드 사용자 에이전트 차단 ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
원활한 시작
# /usr/local/nginx/sbin/nginx -s reload
여러 httpuseragent를 거부하는 방법 내용은 다음과 같습니다.
if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
403을 반환;
}
대소문자 구분 일치
### 대소문자 구분 http 사용자 에이전트 거부###
if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) {
return 403; p>
}
### 대소문자를 구분하지 않는 http 사용자 에이전트 거절###
if ($http_user_agent ~* (foo|bar) ) {
return 403;
}
구문에 유의하세요. ~*는 대소문자를 구분하지 않음을 의미하고 ~는 대소문자를 구분함을 의미합니다.
}
위 내용은 웹사이트 정보가 다른 사람에 의해 크롤링되는 것을 방지하기 위한 몇 가지 방법입니다. 크롤링 동작이 많을수록 웹 서버 성능에 영향을 미치므로 크롤링 방지 조치에 주의해야 합니다.