【问题标题】:Clearing session in Firefox for every request made (Watir issue)为每个请求清除 Firefox 中的会话(Watir 问题)
【发布时间】:2011-01-21 08:49:11
【问题描述】:
我正在开发一个屏幕抓取机器人,它使用Watir (ruby) 来抓取特定的网络搜索。
使用 Watir 是因为搜索结果在页面中传递,只能通过 AJAX 请求获得。
我现在的问题是,要执行新搜索,必须关闭浏览器才能清除搜索会话 - 否则初始搜索会否决 GET 参数的更改。
是否有可能强制 Firefox 清除每个请求的会话?
另外,有没有人有通过 Watir 解决这类问题的经验?
【问题讨论】:
标签:
ruby
firefox
screen-scraping
web-crawler
watir
【解决方案1】:
如果会话是通过 Firefox 浏览器中的 cookie 维护的,那么这是可能的。
在启动之前,您必须从 Firefox cookie 存储库中删除 cookie。
Firefox 将其 cookie 存储在(在我的 ubuntu 和 mac 中)
~/.mozilla/firefox/12wwonrk.default/cookies.sqlite [in ubuntu]
或
~/Library/Application Support/Firefox/Profiles/eox4ghka.default/cookies.sqlite [in mac]
(在 Firefox 3 之前它是 cookies.txt 而不是 sqlite)
如果您可以截断 sqlite(或 txt),那么 cookie 将不再存在。
当您运行 Watir 时,您很可能正在使用 ruby。因此,如果您可以在 Watir::Browser.new 语句之前通过 system 或 %x[](或通过 sqlite gem/lib 的兼容命令)运行这些命令,希望您能完成。
./sqlite3 path/to/cookies.sqlite
DELETE FROM moz_cookies;
.quit