linux Charles 抓包配置 和二级代理 和 charles + pycharm + request 配置
- iOS破解
- 2024-05-16
- 118热度
- 0评论
linux chrome导入Charles 证书
导出 Charles 证书
help --> ssl proxy --> Save Charles Root Certificate --> Desktop/charles.pem
mv charles.pem charles.crt
certutil 证书管理工具 for Chrome 和 Firefox
安装certutil,一个命令行式证书管理相关工具
sudo apt-get install libnss3-tools
利用certutil导入证书
certutil -d sql:$HOME/.pki/nssdb -A -t "CP,CP," -n charles -i ~/Desktop/charles.crt
导入到 Linux 系统
sudo cp ~/Desktop/charles.crt /usr/share/ca-certificates/mozilla/charles.crt
把 mozilla/charles.crt 加入到 ca-certificates.conf 文件末尾
sudo vim /etc/ca-certificates.conf
sudo update-ca-certificates
配置二级代理
Tools --> Import/Export Settings ... --->Export ---> uncheck select all ---> check Access Control + Proxy Settings + External Proxies --> Export --> Done !
<?charles serialisation-version='2.0' ?>
<charles-export>
<proxyConfiguration>
<transparentProxy>true</transparentProxy>
<sslLocations>
<locationPatterns>
<locationMatch>
<location>
<host>*</host>
<port>*</port>
</location>
</locationMatch>
</locationPatterns>
</sslLocations>
<socksTransparentHTTPProxyPorts/>
<socksTransparentHTTPProxyPortRanges/>
</proxyConfiguration>
<accessControlConfiguration>
<ipRanges>
<ipRange>
<ip>
<int>10</int>
<int>10</int>
<int>10</int>
<int>236</int>
</ip>
<mask>
<int>255</int>
<int>255</int>
<int>255</int>
<int>255</int>
</mask>
</ipRange>
</ipRanges>
</accessControlConfiguration>
<externalProxyConfiguration>
<configurations>
<entry>
<string>socks</string>
<mutableExternalProxyConfiguration>
<active>true</active>
<host>192.168.1.1</host>
<port>1080</port>
<domain/>
<username/>
<encryptedPassword>Sr8xTCy3aLdwYzYc1xxmEQ==</encryptedPassword>
</mutableExternalProxyConfiguration>
</entry>
<entry>
<string>http</string>
<mutableExternalProxyConfiguration>
<host>192.168.1.1</host>
<port>1080</port>
<domain/>
<username/>
<encryptedPassword>Sz62CibQSZ5P0PJ3CwqJAw==</encryptedPassword>
</mutableExternalProxyConfiguration>
</entry>
<entry>
<string>https</string>
<mutableExternalProxyConfiguration>
<host>192.168.1.1</host>
<port>1080</port>
<domain/>
<username/>
<encryptedPassword>b4Eg/j68uJdadLEfvogaYw==</encryptedPassword>
</mutableExternalProxyConfiguration>
</entry>
</configurations>
<bypassDomains>
<string>192.168.1.0/24</string>
<string>10.10.10.0/24</string>
</bypassDomains>
<enabled>true</enabled>
</externalProxyConfiguration>
<clientSSLCertificatesConfiguration/>
</charles-export>
pycharm + request 配置
import requests
# 开启charles,运行pycharm发送https请求报以下错误
import urllib3
urllib3.disable_warnings()
# 创建一个 Session 对象
session = requests.Session()
head = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}
data = {
"cname": "",
"pid": "",
"keyword": "上海",
"pageIndex": 1,
"pageSize": 10
}
# 代理地址
proxy = {
'http': 'http://10.10.10.236:8888',
'https': 'http://10.10.10.236:8888'
}
# 请求 URL
url = "https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"
# 发送请求时,加上verify=False,即可解决
# 发送请求
response = session.post(url=url, headers=head, data=data,
proxies=proxy,
verify=False
)
# 检查响应状态码是否为 200
# if response.status_code == 200:
# try:
# # 尝试解析 JSON 响应内容
# data = response.json()
# print(data)
# except ValueError:
# # 如果解析失败,打印警告信息
# print("警告:响应内容为空或不是有效的 JSON 格式。")
# else:
# # 如果响应状态码不是 200,打印错误信息
# print("请求失败,状态码:", response.status_code)
page_content = response.json()
# page_content = response.text
#
print(page_content)
for dic in page_content["Table1"]:
name = dic["storeName"]
addr = dic["addressDetail"]
print(name,addr)
