ruby - 使用无头 chrome 浏览 spotify 显示“在浏览器中启用播放器”
问题描述
我要归档的内容
我试图在不显示播放器的情况下在后台播放 spotify。
环境
$ uname -a
Darwin mbp.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 21 20:07:39 PDT 2018; root:xnu-3789.73.14~1/RELEASE_X86_64 x86_64
$ chromedriver --version
ChromeDriver 2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db)
$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
Google Chrome 69.0.3497.81
- 正常的 chromedriver 显示和播放 spotify 没有问题
- 无头 chromedriver 不会
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("user-data-dir=/path/to/profile/dir")
options.add_argument("--headless")
options.add_argument("--window-size=1280,800")
Capybara::Selenium::Driver.new(app,
browser: :chrome,
options: options,
)
end
session = Capybara::Session.new(:chrome)
session.visit "https://spotify.com"
# .. login script / login with the same chrome profile without --headless beforehand
session.click_on "Web Player"
# this give me the image above "enable player in your browser"
session.save_screenshot("/path/to/a/filename.png")
我的想法
- 它是“Widevine 内容解密模块”相关的,Widevine 无论如何都不会在 headless 中加载?
- 如果在带有 xvfb + 普通 chromedriver 的无头 linux 上会播放 spotify?
解决方案
推荐阅读
- python - 在模块之间共享全局变量并结合 from module import *
- python - 在正则表达式中如何匹配多个或条件但排除一个条件
- javascript - 用于 React 状态初始化的 Cleaner EcmaScript 6
- webpack - 如何在 webpack 5 插件中检索、删除和发出资产?
- android - 如何将云 Firestore 中的数据访问权限授予 android 中的其他添加用户?
- c++ - 如何使用 MFC 在 ListBox 中显示 FTP 服务器列表
- c++ - 这个函数给了我错误“警告:控制到达非无效函数[-Wreturn-type]}的结尾”
- java - Android Studio 新手包传递
- python - Comparisons between an arbitrary number of lists of arbitrary length Python
- firebase - 带有 Repository/Firestore 的 MVVM - 存储来自单个集合的不同查询数组的最佳位置在哪里?