python完美突破tls/ja3(docker版)

admin 2022年7月10日18:19:47评论692 views字数 2736阅读9分7秒阅读模式

python完美突破tls/ja3(docker版)

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/

这里注意一下,需要某种方式上网,否则大概率会构建失败。

python完美突破tls/ja3(docker版)

这里构建可能要稍微等一段时间,因为我这是之前构建过了,所以说速度可能要快不少。

测试效果

这里根据geekbyte大佬文章当中所提供的方法进行一下简单的测试,确保自己这个docker镜像是没问题提的。

进入镜像

这里选择图形界面操作,打开docker的操作面板,然后找到自己构建的镜像。

python完美突破tls/ja3(docker版)

点击这个按钮,然后直接点确定。

python完美突破tls/ja3(docker版)

然后找到刚才生成的新的容器,点击最左边的第一个按钮,就能成功进入环境了。

测试ja3功能

cd /build/out
./curl-impersonate-chrome https://ja3er.com/json
./curl_chrome101 https://ja3er.com/json
python完美突破tls/ja3(docker版)
python完美突破tls/ja3(docker版)

发现,这样实际上就是已经搞定了的。

测试 curl-impersonate-chrome

运行如下命令

./curl-impersonate-chrome -V
python完美突破tls/ja3(docker版)

这里和geekbyte大佬所描述的一样,一般这就稳了。

安装pycurl

经过上面的确认,发现咱们这个镜像是好使的,如果和上面的不一样,建议删掉重新构建一个,不过大概率不会出现问题。

拉取pycurl代码

这里和geekbyte大佬保持一致,采用肝总(spike)魔改过得。

git clone https://github.com/ycq0125/pycurl

安装依赖

这里我们来装一个vim,便于后期修改源码

apt-get install vim

修改源码

这里同样采用geekbyte大佬说的需要修改的地方。

vi pycurl/src/pycurl.h

修改第33行,改成如下的内容

python完美突破tls/ja3(docker版)

开始编译

这里路径是固定的,不会随着不同系统而改变,所以直接执行下面的命令

python3 setup.py install --curl-config=/build/curl-7.81.0/curl-impersonate-chrome-config --openssl-dir=/build/boringssl/build

这里不出意外,会报一个错误。

python完美突破tls/ja3(docker版)

这提示我没有权限,但是在docker当中我实际上已经是root用户了,这里直接赋给它一个权限就好了。

chmod 777 /build/curl-7.81.0/curl-impersonate-chrome-config

然后再次编译就可以成功了。

python完美突破tls/ja3(docker版)

测试效果

来用Python执行一下测试代码

python test.py

这里不出意外,也会报一个错误,这里感谢肝总(spike)的帮助,解决了这个问题。

python完美突破tls/ja3(docker版)

更新一下库的版本,运行下面的命令就好了

cp /build/out/*so* /usr/local/lib
ldconfig
apt-get upgrade

安装一些测试依赖

pip install requests
pip install six

再次运行测试代码

python test.py
python完美突破tls/ja3(docker版)

发现这里确实是成功的,到这里就搞定了。

完善构建过程

根据上面所描述的,然后我们来改一改原来构建 curl-impersonateDockerfile因为本人的水平有限,也是初学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/
python完美突破tls/ja3(docker版)

这里依然需要某种方式上网,否则安装的速度相当的感人。

之后,采用同样的方法,利用这个镜像创建一个vm, 然后进入这个vm,之后就能直接愉快的使用pycurl了。

python完美突破tls/ja3(docker版)

总结

这里我在docker当中实践了一下geekbyte大佬提供的在python当中完美解决tls/ja3的问题的方案,在实践中过程当中也遇到了一些问题,这里感谢geekbyte和肝总(spike)以及群里面的大佬们所提供的帮助,在这里谢谢大佬们了,最终在我这半残的docker知识下也给搞出来了,开心~~

参考资料


原文始发于微信公众号(Coder小Q):python完美突破tls/ja3(docker版)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月10日18:19:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   python完美突破tls/ja3(docker版)http://cn-sec.com/archives/1169169.html

发表评论

匿名网友 填写信息