【관련 학습 추천: 웹사이트 제작 동영상 튜토리얼】
크롤러란 간단하게 일방적으로 말하면 서버와 자동으로 상호 작용하여 작업을 수행하는 도구입니다. 데이터를 얻습니다. 크롤러에 대한 가장 기본적인 것은 웹페이지의 소스 코드 데이터를 얻는 것입니다. 더 깊이 들어가면 웹페이지와 POST 상호 작용을 하고 POST 요청을 받은 후 서버에서 반환되는 데이터를 가져옵니다. 한마디로, 크롤러는 자동으로 원본 데이터를 얻는 데 사용됩니다. 추가 데이터 처리 등에 대해서는 이 기사에서는 주로 크롤러가 데이터를 얻는 부분에 대해 이야기하고 싶습니다. 크롤러 여러분은 웹사이트의 Robot.txt 파일에 주의하시기 바랍니다. 크롤러가 법을 위반하거나 웹사이트에 해를 끼치는 일이 없도록 하십시오.
크롤링 방지 및 크롤링 방지 개념의 부적절한 예
여러 가지 이유(예: 서버 리소스, 데이터 보호 등)로 인해 많은 웹사이트에서 크롤러 효과를 제한합니다.
생각해 보세요. 인간이 크롤러 역할을 한다면 웹 페이지의 소스 코드를 어떻게 얻을 수 있을까요? 가장 일반적으로 사용되는 방법은 소스 코드를 마우스 오른쪽 버튼으로 클릭하는 것입니다.
사이트에서 오른쪽 클릭이 차단되는데 어떻게 해야 하나요?
우리 크롤러에서 가장 유용한 도구인 F12를 꺼냅니다(토론 환영)
F12를 동시에 누르면 열립니다(웃긴)
소스 코드 나왔어요!!
사람을 크롤러로 취급할 때 오른쪽 클릭을 차단하는 것이 크롤링 방지 전략이고, F12가 크롤링 방지 방법입니다.
공식적인 크롤링 방지 전략에 대해 이야기해 보겠습니다.
실제로 크롤러를 작성하는 과정에서 데이터가 반환되지 않는 상황이 있었을 것입니다. 이 경우 서버가 UA 헤더(사용자)를 제한했을 수 있습니다. -agent)입니다. 아주 기본적인 크롤링 방지 방법으로, 요청을 보낼 때 UA 헤더만 추가하면 됩니다... 아주 간단하지 않나요?
사실 필수 사항을 모두 추가하는 것은 간단하고 투박한 방법입니다. 헤더를 한 번에 요청하세요...
웹사이트의 인증 코드도 크롤링 방지 전략이라는 사실을 발견한 적이 있나요? 웹사이트 사용자가 실제 사람이 될 수 있도록 인증 코드가 정말 큰 기여를 했습니다. 인증코드와 함께 인증코드 인식도 등장했습니다.
그러고 보니 인증코드 인식이 먼저인지, 이미지 인식이 먼저인지 궁금합니다.
이제 간단한 인증코드는 인식하기가 매우 간단해졌습니다. , 세분화 및 재구성. 하지만 이제 웹사이트 인간-기계 인식은 다음과 같이 점점 더 무서워졌습니다.
노이즈 제거 이진법의 개념을 간략하게 설명합니다.
이진값, 즉 이미지 자체를 두 가지 톤으로만 변경하는 예는 다음과 같습니다. 매우 간단합니다. Python PIL 라이브러리의
Image.convert("1")
를 통해 얻을 수 있지만, 이미지가 더 복잡해지면 더 생각해 봐야 합니다. 예를 들어직접 간단한 방법을 사용하면
이 됩니다. 이 인증코드를 어떻게 식별할지 고민해 보세요. 이때, 노이즈 제거는 인증에 따라 유용하게 사용됩니다. 코드 자체의 특성으로 배경색을 계산할 수 있습니다. 인증코드와 글꼴 등을 제외한 RGB 값을 색상으로 변환하고, 글꼴은 생략합니다. 샘플 코드는 다음과 같습니다. 색상만 변경하면 됩니다.
for x in range(0,image.size[0]): for y in range(0,image.size[1]): # print arr2[x][y] if arr[x][y].tolist()==底色: arr[x][y]=0 elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256): arr[x][y]=0 elif arr[x][y].tolist()==[0,0,0]: arr[x][y]=0 else: arr[x][y]=255
Arr은 numpy로 얻은 이미지의 RGB 값에서 파생된 행렬입니다. 독자가 직접 코드를 개선하고 실험해 볼 수 있습니다.
주의 깊게 처리한 후에 사진이 인식률은 여전히 매우 높습니다.인증 코드 개발에는 비교적 명확한 숫자와 문자, 간단한 덧셈, 뺄셈, 곱셈, 나눗셈이 있습니다. 일부 어려운 숫자, 문자 및 한자의 경우 바퀴를 직접 만들 수도 있습니다. (위와 같은) 하지만 더 많은 것은 인공 지능을 작성하는 것만으로도 충분합니다... (인증 코드를 인식하는 직업이 있습니다...)
그리고 작은 팁: 일부 웹 사이트에는 인증 코드가 있습니다. PC 쪽에서는 있지만 휴대폰 쪽에서는 그렇지 않습니다...
다음 주제!
또 다른 일반적인 크롤링 방지 전략은 일반적으로 짧은 시간에 너무 많은 방문이 차단됩니다. 매우 간단합니다. 방문 빈도를 제한하거나 IP 프록시 풀을 추가하십시오. 물론 배포도 사용할 수 있습니다...
IP 프록시 풀 -> Google로 왼쪽으로 우회하면 바이두로 갈 수 있습니다. . 무료로 사용할 수 있는 것은 많지 않지만, 결국은 괜찮습니다.
크롤러 방지 전략으로도 간주할 수 있는 또 다른 전략은 비동기 데이터입니다. 크롤러가 점차 심화됨에 따라(당연히 웹사이트의 업데이트입니다!) 비동기 로딩은 반드시 직면하게 될 문제이며, 해결책은 여전히 F12입니다. 익명의 NetEase Cloud Music 웹사이트를 예로 들어보겠습니다. 소스 코드를 열기 위해 마우스 오른쪽 버튼을 클릭한 후 댓글을 검색해 보세요
JS와 Ajax가 등장한 이후의 비동기 로딩의 특징은 무엇입니까?! . 하지만 F12를 열고 NetWork 탭으로 전환한 다음 페이지를 새로 고치고 주의 깊게 검색하면 비밀이 없습니다.
아, 그런데 음악을 듣고 계시다면 클릭하시면 다운로드가 가능합니다...
웹사이트의 구조를 대중화하기 위한 것일 뿐입니다. 저작권을 보호하고 원작자의 이익을 보호합니다.
이 웹사이트가 당신을 제한한다면 어떻게 해야 할까요? 우리에게는 무적의 조합인 셀레늄 + PhantomJs가 있습니다.
이 조합은 매우 강력하며 브라우저 동작을 완벽하게 시뮬레이션할 수 있습니다. 특히 이 방법은 Baidu를 참조하세요. 이는 권장되지 않습니다. 이는 대중 과학에만 해당됩니다.
위 내용은 크롤러 및 웹사이트 크롤링 방지 메커니즘 우회에 대한 간략한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!