前言

昨天geekbyte大佬发布了篇文章 ,文章名是 python完美突破tls/ja3。过程是先编译curl-impersonate,编译成功后再继续编译 spike 大佬魔改过的pycurl,最后用编译好 pycurl 去访问 https://tls.peet.ws/api/all 来进行测试是否编译成功。(感兴趣的小伙伴们可以根据文章试下手动编译)
原文链接:https://mp.weixin.qq.com/s/GU2AgushvIEtLHtYR7BQzg

就当我跃跃欲试的时候,有个大佬(帝国皇家近卫军),把编译好的直接打包发到了 pypi 社区。也就是说,我们只需要pip install 库,就可以直接用了!你没有听错,可以直接用,不需要再进行任何麻烦的编译操作。
教程原链接:https://github.com/synodriver/pycurl/blob/master/special.markdown

Q佬的文章:python完美突破tls/ja3(docker版),文章链接:https://mp.weixin.qq.com/s/UZlLuzlQZrI7w82HI7zGuw

正文

准备环节

1.环境准备:vmware + ubuntu 22.04(建议直接使用ubuntu最新版。kali有问题,不建议使用,不支持window!!!)
2.带上双手(真·有手就行)

上手环节

ubuntu22.04版本虽然自带了python3.10,但是没有pip,我们需要先更新下apt,然后下载pip。

apt update
apt install pip

然后直接一键安装大佬提供好的库

pip install pycurl-antitls==7.45.3rc1

安装好了以后还有一个简单的小步骤,需要移动一个文件到usr的lib文件夹下。大佬甚至贴心的附上了代码。

import sys
import osbase = os.path.join("/usr/local", "lib", "libcurl-impersonate-chrome.so")
with open(base, "rb") as inp, open("/usr/lib/libcurl-impersonate-chrome.so.4","wb") as out:data = inp.read()out.write(data)

libcurl-impersonate-chrome.so 这个文件是在 python3.10 同级目录下,然后我的 python3.10 是在/usr/local/lib 文件夹下,所以 libcurl-impersonate-chrome.so也在这。

然后就,就结束了…
因为我科学上网没弄好,没能成功访问测试网站。所以拿了猿人学练习平台的几道题进行了测试,直接通杀了,真是嘎嘎猛啊。

测试代码如下(写的有点随便,但问题不大),请小伙伴们自行修改访问的网址

import pycurl
import json
from requests import Session
# 打印看下pycurl的版本是否和文章中的一致
print(pycurl.version)
result = 0
def my_func(data):global resultd = json.loads(data)['data']for i in d:result += int(i['value'])print(result)headers = ['Host: www.python-spider.com','accept: application/json, text/javascript, */*; q=0.01','accept-language: zh-CN,zh;q=0.9','content-type: application/x-www-form-urlencoded; charset=UTF-8','cookie: Cookie不能公开~','origin: https://www.python-spider.com','referer: https://www.python-spider.com/challenge/29','sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"','sec-ch-ua-mobile: ?0','sec-ch-ua-platform: "Windows"','sec-fetch-dest: empty','sec-fetch-mode: cors','sec-fetch-site: same-origin','user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36','x-requested-with: XMLHttpRequest'
]
curl = pycurl.Curl()
curl.setopt(curl.SSL_CIPHER_LIST,'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES256-SHA,AES128-GCM-SHA256,AES256-GCM-SHA384,AES128-SHA,AES256-SHA'
)
curl.setopt(curl.HTTP_VERSION, curl.CURL_HTTP_VERSION_2_0)
curl.setopt(curl.SSLVERSION, curl.SSLVERSION_TLSv1_2)
curl.setopt(curl.SSL_ENABLE_NPN, 0)
curl.setopt(curl.SSL_ENABLE_ALPS, 1)
# curl.setopt(curl.SSL_FALSESTART, 0)
curl.setopt(curl.SSL_CERT_COMPRESSION, "brotli")
curl.setopt(pycurl.HTTP2_PSEUDO_HEADERS_ORDER, "masp")
curl.setopt(pycurl.HTTPHEADER, headers)
# my_func是处理数据返回的回调事件
curl.setopt(pycurl.WRITEFUNCTION, my_func)
url = 'https://www.python-spider.com/api/challenge29'
for i in range(1, 101):data = "page={}".format(i)curl.setopt(pycurl.POSTFIELDS, data)# curl.setopt(curl.PROXY, 'https://127.0.0.1:xxxx')curl.setopt(pycurl.URL, url)curl.perform()curl.close()

战果

从这点稀疏的过关人数就能知道,在这之前,这一块的难度是多么高。来对比下第一道题的过关人数

致谢

我对tls、ja3这一块还不怎么了解,然而大佬们已经为大家铺平了道路。真心感谢大佬们的辛勤付出,为爬虫er们降低了学习门槛。
有问题的小伙伴直接加群问:134064772~

python完美突破tls/ja3(大树乘凉版)相关推荐

  1. python完美突破tls/ja3

    声明 以下只是搬运下我公众号的东西.很早就发过了.原帖地址: python完美突破tls/ja3 (qq.com) 已经发公众号的为什么还发csdn 有的圈内朋友,不经过我的允许,删减摘录我公众号的内 ...

  2. 《Python地理空间分析指南 第2版》学习笔记-5.1 距离测量

    第5章 Python与地理信息系统 本章主要学习Python处理矢量数据,包含以下内容: 距离测量 坐标转换 矢量数据重投影 Shapefile 文件编辑 海量数据过滤 专题地图创建 非GIS数据类型 ...

  3. 《Python知识手册》,V3.0版来了,2021年,走起!

    "种一棵树,最好的时间是十年前,其次是现在." 一.前言 大家好,今天给大家推荐我的一位好朋友,公众号「Python数据之道」号主 Lemon . 从 2017 年开始,Lemon ...

  4. python语言程序设计嵩天-python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  5. python网络爬虫权威指南 百度云-分析《Python网络爬虫权威指南第2版》PDF及代码...

    对那些没有学过编程的人来说,计算机编程看着就像变魔术.如果编程是魔术(magic),那么网页抓取(Web scraping)就是巫术(wizardry),也就是运用"魔术"来实现精 ...

  6. 利用python进行数据分析 百度云-利用Python进行数据分析 原书第2版.pdf

    作 者 :(美)韦斯·麦金尼(Wes McKinney) 出版发行 : 北京:机械工业出版社 , 2018.07 ISBN号 :978-7-111-60370-2 页 数 : 480 原书定价 : 1 ...

  7. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  8. 《基于ArcGIS的Python编程秘笈(第2版)》——第1章 面向ArcGIS的Python语言基础

    本节书摘来自异步社区<基于ArcGIS的Python编程秘笈(第2版)>一书中的第1章,第1.1节,作者: [美]Eric Pimpler(派普勒) 更多章节内容可以访问云栖社区" ...

  9. 完美解决Win10 X64非原装版系统打不开CHM文件

    完美解决Win10 X64非原装版系统打不开CHM文件 今天在网上下载了php手册(.chm格式),双击之后发现没有可用的应用打开该类型文件- 在网上大致查了下,原来是因为我装了精减版系统缺少了hh. ...

最新文章

  1. 杜克大学和Facebook联手开发更好的光通信
  2. 网络新高速:T比特网络技术实现成功测试
  3. js判断ipad还是安卓_JS判断客户端是否是iOS或者Android
  4. QT5获取QPlainTextEdit 某行内容
  5. windows下创建vp9的VS版本
  6. 超大ISO文件的分卷刻录方法
  7. 问题以及发现问题和解决问题
  8. jsp、servlet、tomcat中都设置了编码为UTF-8,依然报错:java.io.CharConversionException: Not an ISO 8859-1 character:
  9. mysql insert or update_MySQL insert or update SQL 示例
  10. Fiddler中文版汉化插件 0.1
  11. 安装虚拟机报错 This kernel requires an X86-64 CPU,but only detected an i686 CPU
  12. 服务器怎么查看c盘大文件在哪里,怎么快速查找系统中的大文件?
  13. VMware ESXi安装mac os
  14. docker创建jenkins、jenkins配置邮件模板、jenkins升级、jenkins更改插件源
  15. 微信分享朋友圈链接怎么显示图片-企业微信二维码转成名片
  16. vs2019配置完qt出现问题解决
  17. UnityLightmass
  18. DBC文件创建环境变量,细节拉满
  19. FDC2214-纸张计数显示装置
  20. 啧啧啧……JAVA你看看你……

热门文章

  1. phh mysql语法_MySQLPHP语法
  2. Android 超简单音乐播放器(十)歌词的实现
  3. 【问题集合】Unity3d天空盒问题
  4. 《精彩绝伦的CSS》——布局(二)居中块状框
  5. C# 实现多张图片合成一张gif(录屏可能会用到)
  6. vc8+ACE5.5 安装心得
  7. 使用PointNet++测试分类自己的数据集并可视化
  8. 宝付撰写java基础代码
  9. python中for in range循环的用法_Python入门第7课,循环结构学习,for语句range函数的3种用法...
  10. 如何进行软件架构设计?本质是:业务逻辑和技术分离