在Mac上显示Docker容器里的X11窗口

发布于 2020-05-10 14:09:08

缘起

想自己搭建一个谷歌的 reCaptcha 的破解接口服务,现存有这些方案:

但是过程中碰到了问题,想通过容器提供需要的linux环境,但容器一般都是使用它的网络接口或者终端。

关于 reCaptcha 的历史和用法,见 使用"Google reCaptcha"来防止站点接口被刷

它的原理是:

  • 每个网站有一个sitekey,可以在网站的界面通过浏览器审查元素功能可以找到
  • sitekey 对应一个 secretkey,用于服务端调用它的接口来验证
  • 表单提交时带上它返回的 g-recaptcha-response,后端结合这个和 secretkey 通过它的接口进行验证

Linux上的转发

相关问答:

详情见 Go in Cloud: Run X11 application inside docker without VNC or SSH

docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY

Mac上的转发

参考 X11 Forwarding: Set Up Instructions For Linux And MacHow to show X11 windows with Docker on Mac - Marc Reichelt - Medium

步骤

  1. XQuartz 下载、安装、运行,当前版本是 2016-10-29 的 2.7.11
  2. 在 XQuartz 的配置窗口里勾选 「Allow connections from network clients」
  3. 添加访问控制白名单 xhost + 127.0.0.1,或禁用访问控制 xhost +
  4. 运行容器并通过DISPLAY环境变量指定X11转发地址 docker run -e DISPLAY=host.docker.internal:0 jess/firefox

可通过ssh转发

更多资料

reCaptcha 破解

待续

comments powered by Disqus