【问题标题】:chrome in headless mode not able to connect via webrtc无头模式下的 chrome 无法通过 webrtc 连接
【发布时间】:2021-02-15 11:08:30
【问题描述】:

当尝试在 chrome-headless 模式下通过 selenium 自动化 webrtc 用例之一时,

我配置了以下选项:

caps := selenium.Capabilities{"browserName": "chrome"}
chromePrefs := make(map[string]interface{})
chromePrefs["profile.default_content_setting_values.media_stream_mic"] = 1
chromePrefs["profile.default_content_setting_values.media_stream_camera"] = 1
chromeCaps := chrome.Capabilities{
    Path: "",
    Args: []string{
        "--ignore-certificate-errors",
        "--use-fake-device-for-media-stream",
        "--use-fake-ui-for-media-stream",
        "--headless",
        "--no-sandbox",
        "--disable-dev-shm-usage",
    },
    Prefs: chromePrefs,
}
caps.AddChrome(chromeCaps)

这里我只是使用来自 https://github.com/tebeka/selenium 的 golang selenium 包装器,它超过了原始 java 驱动程序

所以观察是

  1. 在 GUI 模式下(无头)chrome 正在为我的 PC 中的所有接口生成 ice 候选,并且 它与远程对等点连接良好
  2. 在无头模式下,它仅生成 1 个 ICE 候选对象,其类型为主机,mdns 示例:392f939d-6507-45e1-87da-19b63fb76a9e.local,并且不再生成,并且由于我使用的远程对等方不兼容解析 mdns,ice 连接失败

为了克服我添加了一个 STUN 服务器支持,其中 peerconnection 配置为使用示例

var peerConnectionConfig = { 'iceServers': [{ 'url': 'stun:192.189.67.565:3478' }], 'bundlePolicy': 'max-bundle'};

我可以通过wireshark清楚地看到,发送STUN绑定请求并发送成功映射的绑定成功响应地址(192.185.46.57)作为回报,但它不是chrome 使用此 headless 模式生成额外的候选冰

我想知道在无头模式下使用 chrome-webrtc-ice 连接是否需要任何其他/不同的配置?

谢谢

【问题讨论】:

  • 无头不支持偏好

标签: selenium google-chrome selenium-webdriver webrtc stun


【解决方案1】:

无头浏览器不支持首选项

截至 2021 年 2 月

https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925

Headless chrome 不支持首选项设置。您只能使用命令行参数。

支持的参数的完整列表是:

https://peter.sh/experiments/chromium-command-line-switches/

这里可以看到 --blink-settings 所以,

试试

chrome_options.add_arguments('--use-file-for-fake-audio-capture=random_audio.wav')
chrome_options.add_arguments('--use-file-for-fake-video-capture=random_audio.y4m')

【讨论】:

  • 设置媒体(音频和视频)不是我真正关心的问题,我可以设置它。但在无头场景与 GUI 场景中比较时,触发的 ICE 候选者是不同的
【解决方案2】:

我认为它不起作用,我已经为自己尝试过。我相信是这个问题: https://bugs.chromium.org/p/chromium/issues/detail?id=776649

我正在测试的应用程序在日志中证实了我的怀疑:

2021-02-31 17:27:19.240 Available media devices: 
2021-02-31 17:27:19.241 :  audioinput
2021-02-31 17:27:19.241 :  videoinput
2021-02-31 17:27:19.241 :  audiooutput
2021-02-31 17:27:19.256 Local media is not present NotSupportedError: Not supported
2021-02-31 17:27:19.256 No local media configured

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多