흑우집합소에 애드센스를 준비하던 도중...
혹시 Next.Js에서 애드센스를 다는 것이 궁금하면 Next.Js에 구글 애드센스(Adsense) 등록하기포스팅을 참고하자.
뭐 아직 이르긴 하지만 구글 광고를 달려고 Adsense를 신청했었다.
근데 신청 후 몇일 뒤 아래와 같은 메일이 왔다.
뭐가 문젠지 봤더니 승인 상태 옆에 저렇게 찾을 수 없음이 뜬다.
문제는 쉽게 찾을 수 있었다.
먼저 ads.txt에 접근이 되어야 하는데 이상하게 접근이 되지 않았다.
일전에 Nginx에서 특정 IP 접근 금지 시키기 포스팅을 하면서 뭔가 본거 같기도...
그래서 포스팅을 확인해본 결과...
~*(idx_config|DS_Store|nginx|wp-json|ads|humans|exec|level|monitoring|configprops|balancer|actuator) 1;
Url Keyword방식을 적은 부분에서 ads단어가 있었다...
이래서 ads.txt 파일에 접근이 불가능했던 것이다.
그래서 접근 확인을 한 후 재검토를 신청했다.
응 거절이야~
또 저 해맑은 아저씨 메일이 왔다 -_-;;
그래서 몇개 생각을 하다가 Nginx에서 막은게 문제겠지 싶었다.
그러다가 하나 생각이 난게 IP 접근에서 뭔가 있었던 것 같았다.
그래서 불법 침입 시도를 확인할 겸 접근 로그를 보다가...
66.249.66.65 - - [03/Apr/2023:00:22:03 +0900] "GET /robots.txt HTTP/1.1" 301 178 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.66.89 - - [03/Apr/2023:00:24:00 +0900] "GET /robots.txt HTTP/1.1" 301 178 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
그렇다...
내가 구글 봇 클라이언트를 막은 것 같았다...
근데 구글 봇 클라이언트가 저거 하나만 돌지 아니면 여려 개 돌지 확인할 수 있는 방법이 없었다.
그럼 궁금하니 ChatGPT에게 기대를 걸고 물어봤다.
한글과 영어로 물어봤지만...
자기도 모른다 한다.. -_-;;
그래서 직접 내가 찾아봤다.
근데 다 나오진 않고 일부만 주고 정보를 파는 사이트였다.
그래서 21년도 자료긴 한데 구글봇 주소 정보글(영문)에서 약간의 정보를 찾을 수 있었다.
저 본문 중 구글 봇의 범위 주소 (IpV4(서브넷으로 나뉨), IpV6)를 공개한 구글봇 주소 공식 api를 확인해봤다.
일단 최신 자료이고, 하단에 ipv4 정보도 있었다.
그래서 저기 나온 주소를 토대로 내가 막은게 있나 봤다.
geo $bad_ip_range {
# A
34.0.0.0/8 1; #22-07-01 => Google Bot 있을 수 있음
103.0.0.0/8 1; #VN-21-11-29
185.0.0.0/8 1; #DE-21-12-27
159.0.0.0/8 1; #22-04-17
20.0.0.0/8 1; #22-04-30
15.0.0.0/8 1; #22-06-10
51.0.0.0/8 1; #22-06-27
35.0.0.0/8 1; #22-07-01
# B
66.249.0.0/16 1; #US_21-11-15 => Google Bot 있을 수 있음
5.161.0.0/16 1; #22-01-02
45.83.0.0/16 1; #log4j
}
그렇다...
범위 계열에서 A클래스 주소 중 34 주소를 다 막아버린 것이다... -_-;;;
그리고 B클래스에서도 막은 곳이 있었다.
얼른 이 부분은 주석 처리 후 Nginx를 리스타트 했다.
C 클래스에는 다행히 없었다.
그리고 각 Ip 밴 시킨 부분도 몇 개 검토해서 다시 풀었다.
정리
이제 한번 기다려보면 될 것 같다.
근데 구글 문서에서 몇 가지 찾은 정보가 있는데, 유저 에이전트를 확인하라고 한다.
Google 크롤러(사용자 에이전트) 개요 페이지를 참고하자.
그리고 Googlebot과 다른 Google 크롤러 확인 이라는 문서도 있다.
여기에 의하면 host 명령어를 통해서 해당 에이전트를 확인하라고 하는데 아래와 같이 확인이 가능했다. 먼저 역방향 DNS를 조회해본다.
그럼 domain name에 google-proxy-...값이 뜨는데 이 값을 이용해 순방향 DNS를 조회해본다.
그럼 처음 접근한 주소의 IP와 순방향 조회 IP를 비교해서 같으면 된다.
근데 공개한 구글봇 주소 공식 api문서를 통해서 자동으로 차단 처리를 할 수 있을 듯 한데...
이건 좀 나중에 해봐야겠다.