탐지를 원하지 않는 웹 크롤러를 탐지하기 위해 어떤 옵션이 있습니까?
(목록 탐지 기술을 사용하면 스마트 스텔스 크롤러 프로그래머가 더 나은 스파이더를 만들 수 있다는 것을 알고 있지만 어쨌든 스마트 스텔스 크롤러를 차단할 수는 없을 것이라고 생각합니다.
googlebot 및 Yahoo!와 같은 멋진 크롤러에 대해 말하는 것이 아닙니다. 슬러 프. 다음과 같은 경우 봇이 좋다고 생각합니다.
- 사용자 에이전트 문자열에서 자신을 봇으로 식별합니다.
- robots.txt를 읽고 준수합니다.
나는 나쁜 크롤러 에 대해 이야기하고 있고 , 일반적인 사용자 에이전트 뒤에 숨어 있고, 내 대역폭을 사용하고, 대가로 아무것도주지 않습니다.
업데이트 된 목록을 구성 할 수있는 몇 가지 트랩 도어가 있습니다 (Chris, gs에게 감사합니다) .
- robots.txt에 나열된 (허용하지 않음으로 표시) 디렉토리 추가,
- 보이지 않는 링크 추가 (아마도 rel = “nofollow”?로 표시됨),
- style = “디스플레이 : 없음;” 링크 또는 상위 컨테이너
- Z- 색인이 더 높은 다른 요소 아래에 배치
- CaPiTaLiSaTioN을 이해하지 못하는 사람을 감지합니다.
- 누가 답글을 게시하려고하지만 항상 보안 문자가 실패하는지 감지합니다.
- POST 전용 리소스에 대한 GET 요청 감지
- 요청 사이의 간격 감지
- 요청 된 페이지 순서 감지
- http를 통해 https 리소스를 (일관되게) 요청하는 사람 감지
- 이미지 파일을 요청하지 않는 사람 감지 (알려진 이미지 지원 브라우저의 사용자 에이전트 목록과 결합하면 놀랍도록 훌륭하게 작동합니다)
일부 트랩은 ‘좋은’봇과 ‘나쁜’봇 모두에 의해 트리거됩니다. 이를 화이트리스트와 결합 할 수 있습니다.
- 함정을 유발합니다.
- 요청
robots.txt
? - 순종했기 때문에 다른 함정을 유발하지 않습니다.
robots.txt
여기에서 또 다른 중요한 사항은 다음과 같습니다.
스크린 리더를 사용하는 시각 장애인을 고려하십시오. 사람들에게 연락 할 수있는 방법을 제공하거나 (이미지가 아닌) 보안 문자를 해결하여 계속 탐색하십시오.
정상적인 인간 방문자로 위장하려는 웹 크롤러를 자동으로 감지하는 방법은 무엇입니까?
업데이트
문제는 아닙니다. 모든 크롤러를 어떻게 잡아야합니까? 문제는 크롤러를 감지 할 가능성을 극대화 할 수있는 방법입니다.
일부 스파이더는 정말 훌륭하고 실제로 html, xhtml, css javascript, VB 스크립트 등을 구문 분석하고 이해합니다
. 나는 환상이 없습니다. 나는 그들을 이길 수 없습니다.
그러나 일부 크롤러가 얼마나 어리석은 지 놀랄 것입니다. 어리 석음의 가장 좋은 예는 (내 의견으로는) 요청하기 전에 모든 URL을 소문자로 변환하는 것입니다.
그리고 다양한 함 정문을 피할 수있는 ‘충분하지 않은’크롤러가 많이 있습니다.
답변
얼마 전에 저는 작은 호스팅 회사와 협력하여 이에 대한 솔루션을 구현하도록 돕습니다. 내가 개발 한 시스템은 주어진 IP 주소에서 과도한 활동이 있는지 웹 서버 로그를 조사하고 위반자를 차단하는 방화벽 규칙을 발행했습니다. 여기에는 http://www.iplists.com/을 기반으로 한 IP 주소 / 범위의 화이트리스트가 포함되어 있으며 요청 된 사용자 에이전트 문자열을 확인하고 클라이언트가 합법적 인 스파이더라고 주장하는 경우 필요에 따라 자동으로 업데이트되었습니다. 화이트리스트에서 DNS / 역 DNS 조회를 수행하여 소스 IP 주소가 봇의 소유권이 주장 된 소유자와 일치하는지 확인했습니다. 안전 장치로서 이러한 조치는 잘못된 평가의 경우 주소를 블랙 / 화이트리스트에 추가하는 링크와 함께 이메일로 관리자에게보고되었습니다.
나는 6 개월 정도 동안 그 고객과 이야기하지 않았지만, 마지막으로 들었을 때 시스템이 상당히 효과적으로 작동하고 있었다.
사이드 포인트 : 적중률 제한을 기반으로 유사한 감지 시스템을 수행하려는 경우 최소 1 분 (가급적 최소 5 분) 합계를 사용해야합니다. 나는 (이미지는 집계에서 제외되지 않는 한) 이미지가 많은 페이지에 오탐 (false positive)을 생성 할 수 있으며, 두 번째에서 5 ~ 10 안타를 꼭대기 블록 누구로 할 계획 이러한 종류의 이야기 많은 사람들이 볼 것 거짓 생성을 나와 같은 사람이 모든 것을 읽고 싶은 흥미로운 사이트를 발견하면 탭의 모든 링크를 열어서 첫 번째를 읽는 동안 백그라운드에서로드 할 수 있습니다.
답변
Project Honeypot을 참조하세요 . 대규모로 봇 트랩을 설정하고 있으며 IP와 DNSRBL이 있습니다.
까다로운 URL 및 HTML 사용 :
<a href="https://stackoverflow.com//example.com/"> = http://example.com/ on http pages.
<a href="page&#hash"> = page& + #hash
HTML에서는 주석, CDATA 요소, 엔티티 등으로 많은 트릭을 사용할 수 있습니다.
<a href="foo<!--bar-->"> (comment should not be removed)
<script>var haha = '<a href="bot">'</script>
<script>// <!-- </script> <!--><a href="bot"> <!-->
답변
쉬운 해결책은 링크를 만들어 보이지 않게하는 것입니다.
<a href="iamabot.script" style="display:none;">Don't click me!</a>
물론 소스 코드를 보는 일부 사람들은 그 링크가 어디로 가는지보기 위해 해당 링크를 따라갈 것이라고 예상해야합니다. 하지만 해당 사용자에게 보안 문자를 표시 할 수 있습니다.
물론 유효한 크롤러도 링크를 따라갑니다. 그러나 rel = nofollow를 구현해서는 안되며 유효한 크롤러의 신호를 찾으십시오. (유저 에이전트처럼)
답변
나열하지 않은 한 가지는 일반적으로 불량 크롤러를 감지하는 데 사용됩니다.
히트 속도, 좋은 웹 크롤러는 히트를 쪼개서 요청으로 사이트를 폭주하지 않도록합니다. 나쁜 사람들은 다음 세 가지 중 하나를 수행합니다.
- 순차적 링크를 차례로 누르십시오.
- 일부 병렬 시퀀스에서 순차 링크를 누르십시오 (한 번에 2 개 이상).
- 고정 된 간격으로 순차 링크 히트
또한 일부 오프라인 브라우징 프로그램은 여러 페이지를 표시합니다. IP 주소로 차단을 시작하기 위해 어떤 종류의 임계 값을 사용하고 싶은지 잘 모르겠습니다.
이 방법은 fmirror 또는 wget과 같은 미러링 프로그램도 포착합니다.
봇이 시간 간격을 무작위로 지정하면 링크가 순차 또는 깊이 우선 방식으로 순회되는지 확인하거나 봇이 (읽을 단어와 같이) 대량의 텍스트를 순회하는지 확인할 수 있습니다. 너무 짧은 시간. 일부 사이트는 또한 시간당 요청 수를 제한합니다.
실제로 어딘가에서 아이디어를 들었습니다. 사용자가 킬로바이트 단위로 너무 많은 데이터를 가져 오면 봇이 아님을 증명하라는 보안 문자가 표시 될 수 있다는 생각이 들지 않습니다. 그래도 구현 된 것을 본 적이 없습니다.
링크 숨기기에 대한 업데이트
링크를 숨기는 한, CSS (그리기 순서에서 먼저 배치)를 사용하여 div를 다른 아래에 놓고 z 순서를 설정할 수 있습니다. 봇은 메뉴인지 확인하기 위해 모든 자바 스크립트를 구문 분석하지 않고는이를 무시할 수 없습니다. 어느 정도까지는 보이지 않는 DIV 요소 내부의 링크도 봇이 모든 자바 스크립트를 구문 분석하지 않고는 무시할 수 없습니다.
이 아이디어를 완성하면 숨겨진 요소를 잠재적으로 보여줄 수있는 javascript가 자바 스크립트 구문 분석 봇의 하위 집합을 속일 수 있습니다. 그리고 구현할 작업이 많지 않습니다.
답변
양식에 대해 들어 본 간단한 봇 탐지 방법 중 하나는 숨겨진 입력 기술입니다. 양식을 보호하려는 경우 완전히 합법적으로 보이는 ID로 양식에 입력을 넣으십시오. 그런 다음 외부 파일에서 CSS를 사용하여 숨 깁니다. 또는 편집증이있는 경우 페이지로드시 입력 상자를 숨기도록 jquery와 같은 것을 설정하십시오. 이 작업을 제대로 수행하면 봇이 알아 내기가 매우 어려울 것이라고 생각합니다. 특히 숨겨진 입력에 id = “fname”등과 같은 ID를 제공하는 경우 해당 봇이 페이지의 모든 내용을 채울 수 있다는 것을 알고 있습니다.
답변
좋은 사용자 에이전트 문자열을 따라가는 것은 실제로 쉽지 않습니다. 브라우저 버전은왔다 갔다합니다. 다른 행동으로 사용자 에이전트 문자열에 대한 통계를 작성하면 흥미로운 것을 알 수 있습니다.
이것이 얼마나 자동화 될 수 있는지는 모르겠지만 적어도 하나의 차별화 된 점입니다.
답변
테스트되지 않았지만 정규 표현식을 만들 수있는 사용자 에이전트의 멋진 목록이 있습니다. 대부분의 방법을 찾을 수 있습니다.
ADSARobot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston\ Project|BravoBrian\ SpiderEngine\ MarcoPolo|Bot\ mailto:craftbot@yahoo.com|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|DISCo|DISCo\ Pump|DISCoFinder|Download\ Demon|Download\ Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|efp@gmx\.net|Email\ Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites\ Sweeper|Fetch|FEZhead|FileHound|FlashGet\ WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go\!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green\ Research|grub-client|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http\ generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy*Library|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkagent|Internet\ Ninja|InternetSeer\.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC\ Web\ Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac\ Finder|Mag-Net|Mass\ Downloader|MCspider|Memo|Microsoft.URL|MIDown\ tool|Mirror|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS\ FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net\ Vampire|NetZIP|NetZip\ Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa\ Foto|PackRat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|psbot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRobot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web\ Downloader|w3mir|Web\ Data\ Extractor|Web\ Image\ Collector|Web\ Sucker|Wweb|WebAuto|WebBandit|web\.by\.mail|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEbot|WWWOFFLE|x-Tractor|^Xaldon\ WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC]
출처 :
http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/