缘起
想自己搭建一个谷歌的 reCaptcha 的破解接口服务,现存有这些方案:
- ecthros/uncaptcha2: defeating the latest version of ReCaptcha with 91% accuracy
- mikeyy/nonoCAPTCHA: An asynchronized Python library to automate solving ReCAPTCHA v2 using audio
但是过程中碰到了问题,想通过容器提供需要的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 Mac 和 How to show X11 windows with Docker on Mac - Marc Reichelt - Medium。
步骤
- 在 XQuartz 下载、安装、运行,当前版本是 2016-10-29 的 2.7.11
- 在 XQuartz 的配置窗口里勾选 「Allow connections from network clients」
添加访问控制白名单禁用访问控制xhost + 127.0.0.1
,或xhost +
- 运行容器并通过
DISPLAY
环境变量指定X11转发地址docker run -e DISPLAY=host.docker.internal:0 jess/firefox
可通过ssh转发
更多资料
- What is the $DISPLAY environment variable?
- X Window System - Wikipedia
- Running GUI Applications on Native Docker Containers for Mac
- 碰到的问题
reCaptcha 破解
待续