微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无头模式下的 chrome 无法通过 webrtc 连接

如何解决无头模式下的 chrome 无法通过 webrtc 连接

当尝试在 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. 在 Headless 模式下,它仅生成 1 个类型为 host 的 ICE 候选,其类型为 mdns 示例:392f939d-6507-45e1-87da-19b63fb76a9e.local 并且不再生成,并且因为我使用的远程对等点与解析 mdns 不兼容,所以 Ice 连接失败

为了克服这个问题,我添加一个 STUN 服务器支持,对等连接配置为使用示例

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

我可以通过wireshark清楚地看到,STUN绑定请求被发送并且成功映射的绑定成功响应地址(192.185.46.57)被返回,但它不是chrome 使用此无头模式

生成额外的候选冰

我想知道在无头模式下使用 chrome-webrtc-ice 连接时,是否有任何其他/不同的配置必不可少?

谢谢

解决方法

无头浏览器不支持首选项

截至 2021 年 2 月

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

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

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

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

在这里你可以看到 --blink-settings so,

试试

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')
,

我不认为它有效,我自己尝试过。我相信是这个问题: 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。