2010-08-20 4 views
3

많은 스파이더/크롤러가 Google 뉴스 사이트를 방문합니다. 우리는 방문자의 물리적 위치를 파악하고 관련 콘텐츠를 제공하기 위해 GeoIP 서비스에 의존합니다. 그래서 우리는 module_init() 모듈을 개발하여 IP를 MaxMind에 보내고 쿠키를 위치 정보와 함께 설정합니다. 각 페이지보기에서 요청을 보내지 않으려면 먼저 쿠키가 설정되어 있는지 확인하고 그렇지 않은 경우 정보를 보내고 쿠키를 설정합니다. 이것은 정상적인 클라이언트에서 잘 작동하지만 거미가 사이트를 크롤링 할 때 잘 작동하지 않습니다. 각 페이지 뷰는 MaxMind에 대한 쿼리를 표시하며이 활동은 다소 비쌉니다. 우리는 크롤러를 식별하는 솔루션을 찾고 있습니다. 쿠키를 사용하는 합법적 인 브라우저를 사용하는 것이 더 쉽거나 유용한 경우에만 MaxMind를 쿼리합니다.쿠키가 설정된 스파이더 또는 브라우저를 검색하십시오.

답변

3

음, 솔직히 말해서 할 일은 하나도 없습니다. 나는이 동일한 문제를 해결하기 위해 내가 과거에 한 일을 제안합니다. 브라우저 감지 스크립트를 사용하면 브라우저 감지를위한 클래스 톤이 있습니다. 그런 다음 알려진 브라우저의 db에 대해 브라우저를 확인하십시오. 그런 다음 브라우저가 목록에 있으면 "최선의 추측"스크립트를 사용하지 않으면 서비스 호출을 허용하십시오.

Generic ip lookup class

그래서 당신이하고있는 것은 브라우저 유형이 DB가 대신 사용되지는 유료 서비스를 사용하지 않습니다 귀하의 목록에하는 경우에이으로

나는 이런 식으로 뭔가 의미 이 클래스는 가능한 한 가깝게 접근 할 수 있습니다. 당신이 두 세계의 최고를 얻는이 방법은 IP 서비스에 히트를 치고 있지 않다. 그리고 사용자가 어떤 이유로 당신의 브라우저 검사를 지나치게 빠져 나가면 그들은 정확한 위치를 얻고 따라서 당신의 사이트에 정상적으로 나타나게 될 것이다.

이것은 조금 불안해합니다. 저는 여러분이 여기서 제가 말하고자하는 것을 얻을 수 있기를 바랍니다.

진정한 대답은이 문제에 대한 쉬운 대답이나 100 % 답변이 없다는 것입니다. 동일한 상황으로 많은 사이트를 작성 했으므로 미친 듯이 알아 내려고 시도했습니다. 왔다.

$_SERVER['HTTP_USER_AGENT'] = 'Googlebot', 'Yammybot', 'Openbot', 'Yahoo'... etc. 

간단한 브라우저 확인 할 것하지만 IE6 또는 무언가에 응답 할 수 그늘진 것입니다 : 가장 ligit 크롤러의 99 % 이후 값과 같이해야합니다.

정말 도움이 되었으면 좋겠습니다. 적어도 100 % 발견 된 것은 아닙니다. 사용자가 손에 들고 있으면 요일에 알 수 있습니다. 99 %는 없지만 결코 100 %는 사용하지 않으며 클라이언트가 lol을 사용하지 않는 1 %를 사용한다는 사실을 항상 알고 있습니다. (합법적 위협하는 모두)

+0

고맙습니다. 나는 사용자 에이전트를 기록하고 조건을 추가하여 합법적 인 크롤러를 필터링하고 있습니다. 낮은 기술이지만 작동합니다. 감사합니다. –

+0

위대한, 다행 내가 도울 수있어. – BrandonS

1

거미와 크롤러는 일반적으로 별개의 사용자 에이전트가 있습니다. 필터링 할 수 있습니까?

+0

www.atlbl.com에서 ATL의 webcrawler API를 사용하여 수행 할 수 있습니다 주셔서 감사합니다. 너 나 한테 아이디어를 줬어. 나는 user agent로 각 요청에 로그를 기록한다. 명백한 것들을 필터링하는 것은 쉽습니다. 감사. –

0

검출 webcrawlers이

관련 문제