在PhantomJS和Python中伪造Flash插件信息

时间:2014-01-18 19:48:56

标签: javascript python selenium phantomjs navigator

我是PhantomJs的新手。我通过selenium webdriver使用phantomjs,python作为我的语言。我想伪造我的flash插件信息,这是使用javascript非常明显。

我想使用selenium webdriver在Python中做这样的事情(在javascript中完成)。

page.onInitialized = function () {
page.evaluate(function () {
    (function () {
        window.navigator.plugins = {
            'length': 1, 
            'Shockwave Flash': {
                'description':'fakeflash'
            }
        };
    })();
});
};

我不知道如何在Python中实现page.onInitialized和其他函数(使用selenium webdriver) 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

就个人而言,我找不到让它工作的方法,所以我转而使用Firefox通过selenium webdriver并安装了gnash作为flash插件。我知道这不是你想要的,但它最终会产生预期的效果,只要你有系统内存来支持它。

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get(url)
print browser.page_source
browser.quit()
display.stop()

或者更安全(并且永远不会留下讨厌的Xvfb和firefox进程!):

from pyvirtualdisplay import Display
from selenium import webdriver

try:
    display = Display(visible=0, size=(800, 600))
    display.start()
    browser = webdriver.Firefox()
    browser.get(url)
    print browser.page_source
finally:
    if browser:
        browser.quit()
    if display:
        display.stop()

我想也可以在虚拟显示器中使用Chrome。如果有人为了让我们分享魔力让webdriver.PhantomJS在Flash faker中预加载,我很乐意切换,因为它的系统资源要求要少得多。