diff --git a/猿人学练习/22综合牛奶我只喝特仑苏/README.md b/猿人学练习/22综合牛奶我只喝特仑苏/README.md new file mode 100644 index 0000000..8cc2106 --- /dev/null +++ b/猿人学练习/22综合牛奶我只喝特仑苏/README.md @@ -0,0 +1,16 @@ +# 知识点:ja3指纹 + +## 解题思路 + +学习以下的文章基本能搞定ja3指纹 + +1. 深度剖析ja3指纹及突破 + https://mp.weixin.qq.com/s?__biz=MzU0MjUwMTA2OQ==&mid=2247484649&idx=1&sn=42eb5319db1ca830ca81d75218e4c0e4&chksm=fb18f54bcc6f7c5de60395d03650aa7c6a30e37407989c604c31ffa1076d071a32afcb0556c4&scene=21#wechat_redirect +2. python完美突破tls/ja3 + https://mp.weixin.qq.com/s/GU2AgushvIEtLHtYR7BQzg +3. python完美突破tls/ja3(大树乘凉版) + https://www.bilibili.com/read/cv17499645/ +4. 安装方式 + https://github.com/synodriver/pycurl/blob/master/special.markdown +5. python(二)进阶之pycurl + https://www.osgeo.cn/pycurl/quickstart.html diff --git a/猿人学练习/22综合牛奶我只喝特仑苏/main.py b/猿人学练习/22综合牛奶我只喝特仑苏/main.py new file mode 100644 index 0000000..76218b6 --- /dev/null +++ b/猿人学练习/22综合牛奶我只喝特仑苏/main.py @@ -0,0 +1,64 @@ +import pycurl +import json +# 打印看下pycurl的版本是否和文章中的一致 +print(pycurl.version) +result = 0 + + +def my_func(data): + global result + d = 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/22', + '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_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/challenge22' +for i in range(1, 101): + data = "page={}".format(i) + curl.setopt(pycurl.POSTFIELDS, data) + curl.setopt(pycurl.URL, url) + curl.perform() + +curl.close() diff --git a/猿人学练习/22综合牛奶我只喝特仑苏/test.py b/猿人学练习/22综合牛奶我只喝特仑苏/test.py new file mode 100644 index 0000000..da9b69d --- /dev/null +++ b/猿人学练习/22综合牛奶我只喝特仑苏/test.py @@ -0,0 +1,8 @@ +import sys +import os + +base = os.path.join(sys.prefix, "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)