2017-12-23 18 views
-2

저는 파이썬을 배우고 있으며 현재 reddit을 긁어 모으고 있습니다. 어떻게 든 reddit은 내가 (사실상 내 소프트웨어 인) 봇이라는 것을 알아 냈지만 어떻게 알 수 있을까요? 그리고 우리가 우리가 일반 사용자라고 생각하도록 속이는 방법.웹 사이트는 어떻게 봇을 탐지합니까?

실용적인 해결책을 찾았지만 심층적 인 이론적 이해가 필요합니다.

+0

CAPTCHA 인성 검사 이외에 웹 사이트에서 귀하가 봇인지 여부를 판단 할 수 있다고 생각하지 않습니다. 파이썬 코드를 사용하면 헤더를 채워서 웹을 생각할 수 있습니다.eaxmple를 들어 : 'REQ = 요청 (URL)' 'req.add_header ('사용자 에이전트', '모질라/5.0') ' 그리고 마지막 한가지, 그들은 통계를 사용하고 당신의 행동을 분석 할 수 있습니다. – oBit91

답변

4

인터넷 서비스 제공 업체가 봇 및 스크래퍼를 감지하고 대처할 때 사용하는 다양한 기술이 있습니다. 이들 모두의 핵심은 비인간적 인 행동을 식별 할 수있는 휴리스틱 및 통계 모델을 구축하는 것입니다. 같은 것들 : 예를 들어, 특정 시간 프레임 당 특정 IP에서 요청의

  • 총 수는, 무엇보다 50 명 초당 요청, 분당 (500), 또는 하루에 5000 것처럼 보일 수 있습니다 의심 또는 악의적 . 단위 시간당 IP 당 요청 수를 계산하는 것은 매우 일반적이며 틀림없이 효과적입니다.

  • 들어오는 요청 속도의 규칙, 예를 들어 초당 10 요청의 지속되는 흐름은 요청을하거나 조금 기다린 후 다음 요청을하도록 프로그래밍 된 로봇처럼 보일 수 있습니다.

  • HTTP 헤더. 브라우저는 각 요청에 대해 예측 가능한 User-Agent 헤더를 보내 서버가 공급 업체, 버전 및 기타 정보를 식별하는 데 도움을줍니다. 다른 헤더와 결합하여, 서버는 요청이 알려지지 않은 또는 다른 방식의 소스로부터 왔음을 알 수 있습니다.

  • 인증 토큰, 쿠키, 암호화 키 및 이후의 요청을 특수한 방식으로 작성하고 제출해야하는 임시 정보 조합입니다. 예를 들어, 서버는 특정 키 (쿠키, 헤더, 응답 본문 등)를 보내고 브라우저가 서버에 요청한 후속 요청에 해당 키를 포함하거나 사용하도록합니다. 너무 많은 요청이 해당 조건을 충족시키지 못하면 봇에서 나올 수있는 표지입니다.

  • 마우스 및 키보드 추적 기술 : 사용자가 특정 버튼을 클릭 할 때만 특정 API를 호출 할 수 있다는 것을 서버에서 알고있는 경우 프런트 엔드 코드를 작성하여 적절한 마우스 활동이 감지되도록 할 수 있습니다 (예 : 사용자가 API 요청을하기 전에 실제로 버튼을 클릭).

그리고 더욱 많은 기술. 당신이 봇 활동을 탐지하고 차단하려는 사람이라고 상상해보십시오. 사용자가 요청한 것을 확인하기 위해 어떤 접근 방식을 취할 것입니까? 봇의 행동과 반대로 인간의 행동을 어떻게 정의하겠습니까? 그리고 두 가지를 구분하기 위해 어떤 메트릭스를 사용할 수 있습니까?

실용성 문제도 있습니다. 일부 접근법은 구현하기가 더 비싸고 어렵습니다. 그렇다면 문제는 어느 정도 (얼마나 안정적으로) 봇 활동을 탐지하고 차단해야합니까? 사용자 계정을 해킹하려는 봇과 싸우고 있습니까? 또는 공개적으로 볼 수있는 웹 페이지의 일부 데이터를 스크랩하지 못하도록 막기 만하면됩니까? 위양성 및 위양성 검출의 경우 어떻게합니까? 이러한 질문은 봇 활동을 식별하고 차단하기 위해 취할 수있는 접근 방식의 복잡성과 독창성을 알려줍니다.

+1

동의 함. 1. 나는 일정 기간 동안 미래의 요청을 막기 위해 훨씬 낮은 수준의 반복 요청을 보았다. OI는 나의 개인 독서를 위해 만화 사이트를 하루에 한 번 긁었다. 소프트웨어를 업데이트하고 몇 분 안에 약 10 건의 요청을해야 할 때 차단되었습니다. 2.'User-Agent'가 현재 브라우저와 일치하도록 만드십시오. 자동 전화 로그인을 위해 우리 사이트를 긁어 모으는 문제가있었습니다. 3. 권한이 없으면하지 마십시오. – zaph