python完美突破tls/ja3(docker版)
「本文主要是复现一下geekbyte大佬的编译过程,感谢geekbyte大佬的文章以及肝总(spike)的协助,终于在docker上成功运行了,这里来借(抄)鉴(袭)复现一下大佬的方案。」
前言
昨天看到geekbyte大佬的文章,然后看到前期编译的过程实在是太痛苦了,正好我刚看了一点点docker的相关知识,然后看了一下 curl-impersonate
这个库也给出了 Dockerfile
然后就想着直接通过这个 Dockerfile
构建出来的镜像,直接安装肝总(spike)修改之后的curl,这样前期的安装过程不就变得简单很多了吗。
构建docker镜像
这个过程也比较简单,只有两步
-
下载 curl-impersonate
的源码 -
构建镜像
git clone https://github.com/lwthiker/curl-impersonate.git
docker build -t curl-impersonate-chrome chrome/
这里注意一下,需要某种方式上网,否则大概率会构建失败。
这里构建可能要稍微等一段时间,因为我这是之前构建过了,所以说速度可能要快不少。
测试效果
这里根据geekbyte大佬文章当中所提供的方法进行一下简单的测试,确保自己这个docker镜像是没问题提的。
进入镜像
这里选择图形界面操作,打开docker的操作面板,然后找到自己构建的镜像。
点击这个按钮,然后直接点确定。
然后找到刚才生成的新的容器,点击最左边的第一个按钮,就能成功进入环境了。
测试ja3功能
cd /build/out
./curl-impersonate-chrome https://ja3er.com/json
./curl_chrome101 https://ja3er.com/json
发现,这样实际上就是已经搞定了的。
测试 curl-impersonate-chrome
运行如下命令
./curl-impersonate-chrome -V
这里和geekbyte大佬所描述的一样,一般这就稳了。
安装pycurl
经过上面的确认,发现咱们这个镜像是好使的,如果和上面的不一样,建议删掉重新构建一个,不过大概率不会出现问题。
拉取pycurl代码
这里和geekbyte大佬保持一致,采用肝总(spike)魔改过得。
git clone https://github.com/ycq0125/pycurl
安装依赖
这里我们来装一个vim,便于后期修改源码
apt-get install vim
修改源码
这里同样采用geekbyte大佬说的需要修改的地方。
vi pycurl/src/pycurl.h
修改第33行,改成如下的内容
开始编译
这里路径是固定的,不会随着不同系统而改变,所以直接执行下面的命令
python3 setup.py install --curl-config=/build/curl-7.81.0/curl-impersonate-chrome-config --openssl-dir=/build/boringssl/build
这里不出意外,会报一个错误。
这提示我没有权限,但是在docker当中我实际上已经是root用户了,这里直接赋给它一个权限就好了。
chmod 777 /build/curl-7.81.0/curl-impersonate-chrome-config
然后再次编译就可以成功了。
测试效果
来用Python执行一下测试代码
python test.py
这里不出意外,也会报一个错误,这里感谢肝总(spike)的帮助,解决了这个问题。
更新一下库的版本,运行下面的命令就好了
cp /build/out/*so* /usr/local/lib
ldconfig
apt-get upgrade
安装一些测试依赖
pip install requests
pip install six
再次运行测试代码
python test.py
发现这里确实是成功的,到这里就搞定了。
完善构建过程
根据上面所描述的,然后我们来改一改原来构建 curl-impersonate
的 Dockerfile
因为本人的水平有限,也是初学docker,这里难免有写的不合适的地方,如果大佬们有更好的方案欢迎指出。
vi chrome/Dockerfile
直接在原来的 Dockerfile
的后面追加如下的内容。
RUN cd /build
# download pycurl
RUN git clone https://github.com/ycq0125/pycurl
# config
RUN apt-get install -y vim
RUN cp /build/out/*so* /usr/local/lib
RUN ldconfig
# fix file
RUN sed -i 's//curl_test/curl-impersonate//g' /build/pycurl/src/pycurl.h
RUN chmod 777 /build/curl-7.81.0/curl-impersonate-chrome-config
WORKDIR /build/pycurl
RUN python3 setup.py install --curl-config=/build/curl-7.81.0/curl-impersonate-chrome-config --openssl-dir=/build/boringssl/build
RUN pip install requests
RUN pip install six
这样,再次执行构建,得到新的镜像。
docker build -t curl-impersonate-chrome chrome/
这里依然需要某种方式上网,否则安装的速度相当的感人。
之后,采用同样的方法,利用这个镜像创建一个vm, 然后进入这个vm,之后就能直接愉快的使用pycurl了。
总结
这里我在docker当中实践了一下geekbyte大佬提供的在python当中完美解决tls/ja3的问题的方案,在实践中过程当中也遇到了一些问题,这里感谢geekbyte和肝总(spike)以及群里面的大佬们所提供的帮助,在这里谢谢大佬们了,最终在我这半残的docker知识下也给搞出来了,开心~~
参考资料
-
python完美突破tls/ja3 -
https://github.com/lwthiker/curl-impersonate/blob/main/INSTALL.md
原文始发于微信公众号(Coder小Q):python完美突破tls/ja3(docker版)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论