如何在Python MozEmbed中设置User-Agent?

时间:2011-11-14 10:50:42

标签: python mozilla google-plus

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

如何在MozEmbed中设置User-Agent,所以我可以告诉Goolge,我正在使用Firefox?

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

2 个答案:

答案 0 :(得分:1)

很抱歉,还没有测试过,因为我的Mozilla内容本身已经被破解了。

设置它的一种方法是创建自定义设置文件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函数,以使用User-Agent注入自定义urllib2标题。

PS。试用WebkitGTK +和gobject-introspection。自Gtk + -3以来,Mozilla和GTK +有点破碎。

答案 1 :(得分:0)

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

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()