在Firefox中清除每个请求的会话(Watir问题)

时间:2011-01-21 08:49:11

标签: ruby firefox screen-scraping web-crawler watir

我正在开发一个使用Watir(ruby)抓取特定网络搜索的屏幕抓取机器人。 Watir用于搜索结果以页面形式提供,仅通过AJAX请求提供。

我的问题是,为了执行新的搜索,必须关闭浏览器才能清除搜索会话 - 否则初始搜索会否决GET参数的更改。

是否有可能迫使Firefox在每次请求时清除会话?

此外,有没有人有通过Watir解决这类问题的经验?

谢谢!

3 个答案:

答案 0 :(得分:1)

  

是否可能以某种方式强迫   Firefox清除每个会话   请求?

我认为你的意思是浏览器启动请求?

有两种避免cookie问题的好方法:

(1)使用“色情模式”:

  • 在搜索栏中输入about:config
  • 在过滤器字段中键入browser.privatebrowsing.autostart。
  • 双击上面的值并将其设置为True。
  • 下次打开Firefox时,它将处于私人模式!

还有一个“-private”命令行标志。

(2)如果您想要并行运行多个实例(我们运行50+以上!)使用不同的Firefox配置文件,如下所述:

我们使用1 + 2组合,效果很好。

  

此外,有没有人   解决这些问题的经验   问题来自Watir

抱歉,没有。我可以说的是,我们使用iMacros for Firefox,从未在Firefox上遇到过这样的“GET”问题。

答案 1 :(得分:0)

如果会话是通过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时,你最有可能使用红宝石。所以,如果你可以在Watir :: Browser.new语句之前通过系统或%x [](或通过sqlite gem / lib的兼容命令)运行这些命令,希望你能完成。

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

答案 2 :(得分:0)

如果您想使用Watir,可以按照http://watirwebdriver.com/中的描述搞乱配置文件。大多数浏览器默认情况下都会为每个新实例获取自己的配置文件。