• 목록
  • 아래로
  • 위로

*이 글은 Selenium을 막아놓은 몇몇 사이트에 대한 추론을 통해 작성되었고, 아직 검증이 충분히 되지 않았습니다.



Stackoverflow에 보면 Selenium을 detect하는 방법에 대해 여러 Q&A글이 있습니다.


https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver


그런데 PhantomJS, Chrome, Firefox 중 어느 것을 사용하느냐에 따라서 방법이 달라지고,


동일한 headless 브라우저라도 버전에 따라 차이가 있기 때문에 효율적인 방법이 존재하지는 않는 것 같습니다.



CMS에 Selenium 봇이 글을 작성하는 것을 차단하려면, 결국 Selenium이 웹사이트에 로그인 하는 것을 막으면 됩니다.


Selenium에서는 send_keys() 메서드를 사용하여 id와 pw를 입력한 후에


다시 send_keys() 메서드로 엔터를 입력하거나, submit 버튼에 대해 click() 메서드를 사용하겠죠.


로그인을 하지 않아도 글을 쓸 수 있는 경우에는 대부분 캡챠를 활성화했을테니


Tensorflow나 Tesseract 없이 Selenium만 단독으로 사용하면 이 부분에서 막힐 것입니다.



따라서 id/pw를 입력하는 element에 실제로 키 입력이 이루어졌는지 여부로 Selenium인지 아닌지 여부를 판단할 수 있습니다.


다만 브라우저 익스텐션 중 자동 로그인과 관련된 것이나, 브라우저 자체의 id/pw 자동 입력 기능까지도 차단할 개연성이 있습니다.


결국 id/pw를 입력하는 element에서 엔터 또는 탭의 입력이 있거나,

(탭을 이용하여 submit 버튼으로 이동하는 경우도 있기 때문입니다.)


submit 버튼에 마우스가 hover 되는지 여부로 판단하면 될 것 같습니다.

(id/pw/submit element에서 엔터 입력이 있거나, submit 버튼에 마우스가 hover 되는지 여부로 판단할 수도 있겠죠.)



물론 pyclipper 등을 이용하여 id/pw를 copy & paste한 후에 엔터를 입력하는 방식으로 위와 같은 방법을 우회할 수 있지만,


이러한 방법은 headless 브라우저를 사용하거나, 브라우저가 백그라운드에서 동작하는 경우에는 사용할 수 없습니다.


따라서 Selenium 봇의 활용도가 크게 떨어진다고 볼 수 있습니다.



제가 지금은 아침이라서 더 이상 길게 적을 수 없고, 조금 더 개념을 정돈하고 내용을 추가하여 다시 글을 올리겠습니다.



+)

Selenium을 이용하지 않고 그누보드나 XE/RXE에 글을 작성할 수 있는지에 대해서 생각해보면 

CMS에서 글을 작성할 때 어떠한 방식으로 데이터를 전송하는지를 파악하면 물론 불가능하지는 않겠지만,

적어도 백링크를 다는 봇은 에디터의 코드입력 모드를 이용할테니 적어도 이런 경우는 막을 수 있을 것으로 생각되네요.

(에디터 대신 textarea를 사용하면서 tag 입력을 허용하는 유형의 사이트는 매우 드물 것 같네요.)

작성자
이니스프리 119 Lv. (0%) 1890450/115200000EXP

당분간 일신상의 사정으로 쪽지나 댓글로 답변을 드리기 어렵습니다. 죄송합니다.

 

CSVpuymXAAAVVpd.jpg

댓글 2

title: 황금 서버 (30일)humit
profile image
+ 참고로 에디터 모드인 경우에도 해당 부분을 HTML로 저장하는 부분이 있기 때문에 그 부분을 javascript로 직접 입력하게 해서(innerHTML) 우회를 할 수도 있습니다.
comment menu
2019.08.26. 23:38

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image

제가 미처 그 부분까지는 생각을 못하고 글을 작성했네요 ㅠㅠ

다양한 우회 방법이 있군요 ㄷㄷ

역시 보안의 세계는 심오하네요~

말씀해주셔서 감사합니다!

그럼 편안한 밤 되시고 안녕히 주무세요 ^^

comment menu
2019.08.27. 00:22

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 638
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4315
282 램노드에서 허용되는 행위 vs 금지되는 행위 1 이니스프리 이니스프리 19.11.19.12:59 227
281 그누보드(아미나) 게시판의 첨부파일을 크롤링할 때 세션 관련 유의할 점 1 이니스프리 이니스프리 19.11.18.23:00 313
280 Selenium에서 파일을 다운받을 폴더를 지정하기 이니스프리 이니스프리 19.11.18.22:15 4323
279 ESET의 삭제방법 (공홈 removal tool) 이니스프리 이니스프리 19.11.18.12:54 546
278 [Requests] params, data 전달시에 딕셔너리의 구조가 복잡한 경우 해결방법 이니스프리 이니스프리 19.11.17.14:55 145
277 Tesseract에서 숫자만 인식하는 방법 이니스프리 이니스프리 19.11.16.14:48 2878
276 [OpenCV] !_src.empty() in function 'cvtColor' 에러 해결방법 2 이니스프리 이니스프리 19.11.15.20:40 12736
275 [Pillow] 파이썬에서 이미지 파일의 포맷을 알아내는 방법 이니스프리 이니스프리 19.11.14.23:25 128
274 [파이썬] Selenium 쿠키를 Requests에서 불러오는 방법 이니스프리 이니스프리 19.11.10.15:13 2359
273 파이썬에서 리스트의 문자열들이 특정 문자열 안에 포함되어 있는지 확인하는 방법 1 이니스프리 이니스프리 19.11.10.02:34 2878
272 (펌) 우분투에 IPVanish 설치 방법 이니스프리 이니스프리 19.11.07.22:46 129
271 크롤링용 서버에서 홈서버가 VPS보다 유리한 점 이니스프리 이니스프리 19.11.07.20:53 234
270 11월 플러터 오프라인 강좌 이니스프리 이니스프리 19.11.06.13:41 177
269 파이썬 & 데이터 분석 & 웹 크롤링 오프라인 강의 image 이니스프리 이니스프리 19.11.03.01:41 200
268 [파이썬] Selenium에서 클릭이 안 될 때의 해결방법 이니스프리 이니스프리 19.10.27.22:20 10370
267 현 시점에서 홈 서버로 가장 적절한 미니 PC 중 하나를 추천 드립니다 image 이니스프리 이니스프리 19.10.26.20:10 1750
266 2020년 대만 공휴일 image 이니스프리 이니스프리 19.10.26.19:39 641
265 윈도우 업데이트 후 화면밝기조절이 안 될 때의 해결방법 이니스프리 이니스프리 19.10.24.21:00 885
264 윈도우10에서의 VPN 사용 이니스프리 이니스프리 19.10.20.21:21 234
263 [KAL] 보너스 항공권 공제 마일리지 표 (평수기) 1 image 이니스프리 이니스프리 19.10.16.14:55 140