【问题标题】:How to set User-Agent in Python MozEmbed?如何在 Python MozEmbed 中设置用户代理?
【发布时间】:2011-11-14 10:50:42
【问题描述】:

我已经构建了一个简单的专用浏览器(如 Prism),用于不同的站点。可悲的是,Google+ 阻止了所有浏览器,但只有四个。所以它也屏蔽了我的。

如何在 MozEmbed 中设置 User-Agent,以便告诉 Goolge,我使用的是 Firefox?

    mozembed = gtkmozembed.MozEmbed()
    mozembed.load_url("https://plus.google.com")
    mozembed.show()

【问题讨论】:

  • 需要设置general.useragent.override 首选项,但我不知道您将如何使用 MozEmbed。

标签: python mozilla google-plus


【解决方案1】:

抱歉,还没有测试过,因为我的 Mozilla 的东西天生就坏了 atm。

一种设置方法是创建自定义设置文件prefs.js 并将该目录设置为配置文件目录:

profdir = '~/.config/mozilla'
profile = 'foo'
mozembed.set_profile_path(profile_directory, profile)

现在,gtkmozembed 应该从~/.config/mozilla/foo/prefs.js 读取首选项。示例custom user-agent 条目:

user_pref("general.useragent.override", 'foo');

另一种选择是重载gtkmozembed.*_stream 函数以使用urllib2 注入自定义User-Agent 标头。

PS。试试 WebkitGTK+ 和 gobject-introspection。自 Gtk+-3 以来,Mozilla 和 GTK+ 有点崩溃。

【讨论】:

  • 我必须在 vendor、verdorSub 和 vendorComment 中设置哪些确切值才能被识别为 Firefox?
  • @Witek 哎呀!原来对vendorSubvendorComment 的支持不久前被删除了。对于vendor,请从此处查看示例developer.mozilla.org/en/Gecko_user_agent_string_reference
  • ..你也可以试试general.useragent.override是否有效;)
  • 它与 general.useragent.override 一起使用:“Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1”。我没有编辑 prefs.js,而是打开了 URL about:config。现在谷歌不再阻止我了:-D
  • @Witek:呵呵,不知道 about:config 在 pygtkmozembed 中工作 :)
【解决方案2】:

我在这里找到了一个可能的解决方案:

http://www.mail-archive.com/pygtk@daa.com.au/msg18189.html

基本上是关于使用 urllib 获取网站内容,您可以在其中设置用户代理,然后使用 mozembed 读取此内容

    fd = urllib2.urlopen(urllib2.Request(url, headers={'User-Agent': USER_AGENT}))
    html = fd.read()
    fd.close()
    mozembed.open_stream(url, "text/html")
    mozembed.append_data(html, len(html))
    mozembed.close_stream()

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2012-05-02
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多