비그누) 특정로봇 방문을 인지하고 우회시키기

비그누) 특정로봇 방문을 인지하고 우회시키기

QA

비그누) 특정로봇 방문을 인지하고 우회시키기

본문

안녕하세요.

먼저 그누보드 질문이 아니라 죄송합니다.

제가 물어볼 곳이 여기밖에 없네요. ㅠㅠ

그래도 그누보드에 적용할 것이라 전혀 관계가 없는건 아닙니다.

 

 

질문)

A, B, C... 의 로봇이 사이트 방문시 =>>>>>> robot.html 사이트로 우회시키고

이외 접근(기타 로봇 또는 사람이 정상접근)은 ====> 원래 소스가 있는 페이지 그대로 보여주기

에 대한 소스를 검색 해봤는데요.

 

https://stackoverflow.com/questions/677419/how-to-detect-search-engine-bots-with-php

https://www.insanevisions.com/bot-detection-with-php

https://www.cult-f.net/detect-crawlers-with-php/

https://www.geeksforgeeks.org/how-to-detect-search-engine-bots-with-php/

 

위 사이트에서 읽어봐도 php를 잘 몰라서 대략적인 것은 알겠는데...

어떤 소스가 맞는 소스인지? 

위 소스들에서 제가 원하는대로 사이트로 우회하는 소스를 어디에 어떻게 넣어야 하는지를 모르겠네요.

 

이럴때 마다 조금이라도 젊을때 php를 공부를 해둘껄이란 생각을 합니다.

지금도 안늦었다라고 생각하는데....잘 안되네요.

그냥 소스만 10년이상 보니..대략적인건 알겠는데...

소스를 수정 및 편집이 안되네요..

 

혹시 좀 도와 주실 분 있으신가요?

 

 

제가 찾은 것중 눈에 들어오는건..

아랫것인데.. 소스가 맞는지도 좀 봐주시겠어요?

로봇 =>1 이라고 되어 있는거에서...숫자 1은 뭐에요? 

 

<?
//검색로봇이 아니면 리다이렉트
$useragent = $_SERVER["HTTP_USER_AGENT"];
$robotPattern = array(
'1NMoreoon' => 1,
'1Noon' => 1,
'yeti' => 1);
foreach ($robotPattern as $agentName => $isRobot){
            if(strpos($useragent,$agentName)&&($isRobot)) $robot = true;
        }
        
        if(!$robot){
            if(!$check)echo "<script>document.location.href = 'http://sir.kr'</script>";
        }
?>

 

 

검색 1시간 넘게 하다가..ㅠㅠ 지쳐서 질문 드리는거라..노력하지두 않고..란 말은 하지말아주세요

먼저 감사 드립니다.

 

수고하세요.

이 질문에 댓글 쓰기 :

답변 2

 


//if(!$robot){
//            if(!$check)echo "<script>document.location.href = 'http://sir.kr'</script>";
//        }
 
if($robot == true){//$robot 이 true 일때 sir.kr 로 보냄
            if(!$check)echo "<script>document.location.href = 'http://sir.kr'</script>";
        }

대략만 주석 달아드렸습니다. 참고하세요.


<?
//검색로봇이 아니면 리다이렉트
$useragent = $_SERVER["HTTP_USER_AGENT"];
//$_SERVER["HTTP_USER_AGENT"] 는 php 에서 제공하는 에이전트 값 ( 로봇,크롬,익스 등등)
$robotPattern = array(
'1NMoreoon' => 1,
'1Noon' => 1,
'yeti' => 1);
//foreach 적용시 $배열 as $배열의 키값 => $배열의 변수값으로 지정하며으로 배열 크기만큼 while
//즉 1은 $robotPattern 배열의 키값에 대한 변수값
foreach ($robotPattern as $agentName => $isRobot){
            if(strpos($useragent,$agentName)&&($isRobot)) $robot = true; 
             //strpos : 비교 연산자. 참일경우 1
             // 즉 $useragent 와 $agentName 비교 참일경우 1
             // 결국 참일때 1 and 1 조건으로 $robot 에 true 입력;       
}
        
        if(!$robot){ //$robot 이 true 가 아닐때 'sir.kr'로 보냄
            if(!$check)echo "<script>document.location.href = 'http://sir.kr'</script>";
        }
?>

먼저 소중한 시간 내주셔서 답변 달아주셔서 감사드립니다.

제가 유력하게 보고 있는게 맞는건가 보군요.
전 리다이렉 하는 소스가 있어서 이 소스가 눈에 들어온거였는데요.
그런데 제가 원하는것과 반대인데요.

특정 로봇접근시 우회시키고(리다이렉), 그외 접근(기타 로봇 또는 정상적인 방문자 접근)일땐 반응없이 접근한페이지 그대로 보여주기 입니다.

KaiKai님이 주석 달아준 소스는 반대인것 같은데요...(제 해석이 맞다면..)
이건 어떻게 수정하면 좋을까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 136
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT