【问题标题】:Faking Flash plugin info in PhantomJS and Python在 PhantomJS 和 Python 中伪造 Flash 插件信息
【发布时间】:2025-12-06 16:55:01
【问题描述】:

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

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

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

不知道如何在Python中实现page.onInitialized等功能(用selenium webdriver) 任何帮助将不胜感激。

【问题讨论】:

    标签: javascript python selenium phantomjs navigator


    【解决方案1】:

    就我个人而言,我也找不到让它工作的方法,所以我转而通过 selenium webdriver 使用 Firefox,并将 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 中预加载的魔力,我很乐意切换,因为它对系统资源的要求要少得多。

    【讨论】: