2011-01-21 3 views
2

Watir (ruby)을 사용하여 특정 웹 검색을 크롤링하는 화면 스크래핑 로봇을 개발 중입니다. 검색 결과가 AJAX 요청을 통해서만 페이지로 전달되므로 Watir이 사용됩니다.모든 요청에 ​​대해 Firefox에서 세션 지우기 (Watir 문제)

이제는 새로운 검색을 수행하기 위해 브라우저를 종료해야 검색 세션을 지울 수 있습니다. 그렇지 않으면 초기 검색이 GET 매개 변수의 변경 사항을 무효화합니다.

요청이있을 때마다 Firefox가 세션을 지우도록 할 수 있습니까?

또한 Watir을 통해 이러한 종류의 문제를 해결 한 경험이 있습니까?

감사!

답변

1

가 만든 모든 의 요청에 따라 세션을 취소 파이어 폭스를 강제로 어떻게 든 수 있습니까?

브라우저 시작을 요청한다고 생각하십니까?

쿠키 문제를 방지하는 좋은 두 가지 방법이 있습니다

(1) "포르노 모드"를 사용 :

  • 에 대한 검색 바 타입 : 설정
  • 유형 browser.privatebrowsing을 필터 필드에서 .autostart.
  • 위의 값을 두 번 클릭하고 True로 설정하십시오.
  • 다음 번에 Firefox를 열면 개인 모드가됩니다!

"-private"명령 줄 플래그가 있습니다.

(2) 여기에 설명 된대로 병렬 인스턴스를 두 개 이상 (우리는 50 +를 실행!) 사용하는 다른 파이어 폭스 프로필 실행하려면 :

우리는 1 + 2를 결합하여 잘 작동합니다.

또한, 사람이 아니,

죄송합니다 Watir과

를 통해 문제의이 종류를 해결 경험을 가지고있다. 내가 말할 수있는 것은 Firefox 용 iMacros를 사용하고 Firefox와 같은 "GET"문제가 발생하지 않았다는 것입니다.

0

세션이 Firefox 브라우저의 쿠키를 통해 유지되는 경우 가능합니다.

모두 당신이 시작하기 전에 파이어 폭스 쿠키 저장소에서 쿠키를 제거해야합니다. 파이어 폭스는

~/.mozilla/firefox/12wwonrk.default/cookies.sqlite [in ubuntu] 

또는

~/Library/Application Support/Firefox/Profiles/eox4ghka.default/cookies.sqlite [in mac] 

(파이어 폭스 3 이전 대신이 sqlite를 Cookies.txt 한) (내 우분투와 맥에서 현재)은자를 수있는 경우에 그 쿠키를 저장 sqlite (또는 txt) 다음에 쿠키는 더 이상 존재하지 않습니다.

Watir을 사용하면서 Ruby를 사용하고있을 가능성이 큽니다. 따라서 Watir :: Browser.new 문 앞에 시스템 또는 % x [] (또는 sqlite gem/lib를 통해 호환되는 명령)을 통해 이러한 명령을 실행할 수 있다면 잘하면 완료됩니다.

./sqlite3 path/to/cookies.sqlite 
DELETE FROM moz_cookies; 
.quit 
0

Watir을 사용하려면 http://watirwebdriver.com/에 설명 된대로 프로필을 엉망으로 만들 수 있습니다. 대부분의 브라우저는 기본적으로 새 인스턴스마다 고유 한 프로필을 얻는 것으로 보입니다.

관련 문제