본문 바로가기

전체 글

(84)
Bot Detection / 크롤러 차단 / 크롤러 우회 #4 (END) 지난번 포스팅은.. 지난번에 포스팅을 급하게 핸드폰으로 했더니 내용도 너무 적고 블로그에서 보니 폰트와 글씨 크기며.. 총체적 난국이었다. 뭐 간편하게 글을 쓸 수 있는 것은 좋긴 한데, 앞으로 핸드폰으로 글을 포스팅할 일은 거의 없지 않을까.. ActionChain 2 어쨌든 원래 크롤링 코드에 ActionChain을 적용해봤는데, 결과적으로는 잘 작동했다. 하지만, 시행착오는 언제나 존재하는 법. 그 삽질들을 조금 기록해보고자 티스토리를 열었다. 1. StaleElementReferenceException 이름부터 번지르르한 이 친구는 비교적 해결하기 쉬웠다. StaleElementReferenceException (이하 Stale) 은 Web Element에 접근할 때, DOM에 해당 Element..
Bot Detection / 크롤러 차단 / 크롤러 우회 #3 ActionChain 지난번에 분명 이어지는 포스팅에서는 header를 조작하는 내용에 대해서 다루겠다고 했는데... 원래 시작한 내용으로부터 너무 산으로 갈 것 같아서 안되겠다. 아예 차단 우회를 포기한 것은 아니고, 찾아보니 Webdriver에 ActionChain 이라는게 존재하는데 자세한 원리는 아직 파악 못했지만 사람이 마우스 등 으로 조작하듯이 특정 태그로 포커스나 마우스를 이동하고 클릭 등의 명령을 일종의 Chain형태로 수행할 수 있는 메소드 인듯 하다. ToDo 다만 내가 구현한 크롤러는 속도만 고려했기에 링크만 파싱해서 driver로 웹페이지를 탐색하는 방식인데, Actionchain을 사용하려면 어느정도 속도 저하는 감안하지만 사람과 유사하게 브라우징 한다는 점에서 차단을 우회할 수 ..
Bot Detection / 크롤러 차단 / 크롤러 우회 #2 디버깅의 필요성2 계속 차단되는 포인트가 뭘까.. 여러가지 시도를 해봤다. 일단 구글링과 StackOverflow를 뒤져가면서 알아낸 사실은 1. Selenium Webdriver의 Preference는 Runtime 중에 (Webdriver가 Instance로 만들어진 상태)는 변경할 수 없다. 2. Proxy IP 또한 마찬가지로 바꿀 수 없다. Firefox의 경우 webdriver에서 about:config로 접속해서 바꿀 순 있긴 하지만, 영 찜찜.. 1번의 경우는 header의 User-Agent 필드 값을 사전에 List로 정의해서 연결할 때마다 다른 User-Agent를 갖도록 위장하기 위해서 시도했었는데, Selenium을 사용하는 경우 불가능하다고 한다. 2번의 경우도 마찬가지, 크롤링..