2011-04-11 2 views
0

검색 엔진 스파이더가 일반적으로 로그인 한 사용자가 필요한 페이지를보고 @login_required를 우회 할 수있는 깨끗한 방법을 찾고 있습니다. 검색 엔진을 거짓 계정으로 자동 로깅하는 미들웨어를 작성할 수는 있지만 깨끗하다고 ​​부르는 것은 아닙니다. 더 나은 솔루션에 대한 제안? 감사.Django에서 검색 엔진 스파이더의 경우 @login_required를 비활성화하십시오.

+0

현재 무료 첫 번째 클릭에 대한 자세한 내용을보실 수 있습니다. 예를 들어, Google 학술 검색에서 검색 할 수 있지만 일반 사용자가 검색하지 못하도록하는 전체 텍스트 액세스를 제공하는 경우 금지되지 않고이 작업을 수행 할 수 있다고 생각합니다. –

답변

2

하지 마십시오. 이것은 '클로킹'이며 Google의 색인에서 귀하를 차단할 수 있습니다.

클로킹은 사용자 및 검색 엔진에 다른 콘텐츠 또는 URL을 제공하는 관례입니다. 사용자 에이전트를 기반으로 다른 결과를 제공하면 사이트가 사기성으로 인식되어 Google 색인에서 삭제 될 수 있습니다.

는 대신, 구글의 첫 번째 클릭 무료 솔루션을 구현해야합니다. 이 설정에서 Google 검색 결과의 첫 번째 클릭은 전체 콘텐츠를 볼 수 있고 후속 클릭은 트래핑됩니다. 이 작업은 참조 자 기준 또는 쿠키 기준으로 수행 할 수 있습니다.

2

왜이 작업을 원하십니까? 검색 엔진이 페이지를 볼 수 있으면 검색 엔진의 결과 페이지에 정보가 표시 될 것이므로 누구나 로그인하지 않고 볼 수 있습니다. 어쨌든 스파이더 나 봇을 식별하는 유일한 방법은 스푸핑에 사소한 사용자 에이전트 문자열을 사용하는 것입니다.

+0

우리에게는 사소한 것이지만, 기술적이지 않고 일반적으로 제도적인 (따라서 많은 경우 사소한 규칙 위반조차도 회피하는) 내 사용자에게는 적합하지 않습니다. – rfrankel

0

나는 그것을 얻지 못한다. "@login_required"에 중요한 단어가 있습니다 : "필수". 그것이 "필수"라면, 그것은 좋은 이유입니다. 즉, 웹 페이지를 보려면 자격 증명이 필수임을 의미합니다. 내용이 비공개, 비밀 등이기 때문에

검색 엔진을 통해 페이지를 사용 가능하게하려면 공개로 설정해야합니다. 따라서 로그인은 이 아니며이 필요하지 않습니다. 그래서 @login_required 데코레이터로 뷰를 보호해서는 안됩니다.

어쩌면 당신의 문제는 귀하의 페이지 가용도를 넘어선 것일 수 있습니다. 콘텐츠가 이고 실제로는이 공개되고 조회수가이 데코레이터에 의해 보호되지 않아야 할지도 모릅니다. 아마도 필요한 것은 모든 사용자 (기록 된 또는 익명)에 대해 공용 부분을로드하고 결국 사용자가 식별되면 개인 비트를로드하는 것입니다.

그렇지 않으면 스파이더 용 백도어를 남겨 두는 것이 좋습니다. 개인 콘텐트가 더 이상 사적인 내용이 아니기 때문입니다.