2017-11-27 18 views
0

자격 증명을 사용하여 로그인하고 페이지에서 일부 javascript 요소를 활성화하는 봇을 작성하려고합니다.로그인하여 프로덕션 환경에서 세션을 유지할 수있는 HTTP 클라이언트

내가 속이고있는 사이트에는 사용할 수있는 API가 없으며 사이트 자체는 매우 무겁습니다.

Tesla과 같은 것을 사용하면 Watir 및 Capybara와 마찬가지로 사용자로 로그인하고 브라우저와 상호 작용할 수 있지만 프로덕션 환경에서는 가능합니까?

필자는 Elixir에 익숙하지 않지만 init에서 로그인 할 때 장황한 GenServer를 사용하게 될 것이라고 생각합니다. 대부분의 사용자는 2FA를 사용합니다. 2FA는 사용자가 로그인 할 때 권한을 부여 할 수 있지만 사용자가 로그인 한 시간부터 봇을 실행하려면 auth 세션/토큰을 저장해야합니다.

테스트 프레임 워크 인 Watir을 사용하여 성공적으로 봇을 만들었습니다. 브라우저를 열고 물리적으로 로그인합니다. 그러면 로봇이 성공적으로 진행됩니다. 그러나 헤드리스 드라이버로 전환하면 JS가 제대로 실행되지 않습니다.

이러한 것을 제작에 적용 할 수 있습니까?

+0

"헤드리스 드라이버 JS가로드되지 않습니다."나는 이것을 따르지 않고 있습니다. chromedriver와 geckodriver 모두 headless를 지원하여 JS를 잘로드하고 둘 다 Selenium/Watir 코드로 작업합니다. – titusfortner

+0

헤드리스 드라이버는 무엇입니까? 팬텀 (Phantom)보다 덜한 부분은 풀 브라우저에서 의도 한 방식대로 JS를 실행하지 못할 가능성이 높습니다. – evilSnobu

+0

PhantomJS를 사용하고 있었고 JS 실행 방법으로 인해 80 % 정도만 작업 할 수있었습니다. 그래서 내가 Watir로 바꿨다. (임시 솔루션으로 내가이 응용 프로그램이 생산에 갈 것인지 논쟁하는 동안) –

답변

0

이렇게하려면 Hound 또는 Wallaby을 사용할 수 있습니다. 그들은 꽤 비슷합니다. 나는 왈라비가 카피 바라에게 조금 더 가깝다 고 생각한다. 약간 날짜가 있지만 여기는 a discussion on the difference between Wallaby and Hound입니다.

전에 하운드를 사용했으며 제대로 작동했습니다. PhantomJS 대신 Chromium을 사용해야했지만, 내가 방문했던 페이지는 무겁고 PhantomJS에서는 작동하지 않는 페이지가 있기 때문에 사용해야했습니다. 헤드리스가 아닌 (헤드가 달린?) 크롬을 사용하여 진행중인 작업을 볼 수 있었고 모든 것이 준비되면 문제없이 헤드리스로 전환 할 수있었습니다.

프로덕션 환경에서 실행하는 것과 관련하여 로컬에서만 봇을 실행했지만 로컬에서 작동하지 못하게 한 다음 동일한 설정으로 EC2 인스턴스에 배포하고 실행할 이유가 없습니다.