王哆啦的自留地 - 2023年6月
type: channel
link: https://www.wangduola.com/2023/06/
description: 深筑墙，广积粮。
items: Fiddler:Error: Can't create the key of the subject ('JoeSoft')
items: Fiddler:Unable to configure Windows to Trust the Fiddler Root certificate
items: 解决selenium-wire response body 乱码
items: python 抓取 HTTP request？
items: 使用php运行python文件

Fiddler:Error: Can't create the key of the subject ('JoeSoft')
type: item
date: 2023-06-25T18:10:00+08:00
description: 当在Fiddler中选择 Tools – Fiddler Options – HTTPS 中的选项移除证书的时候，却发现报错了。错误信息为：Can't create the key of the subject ('JoeSoft') Failed解决方法在网上搜索，找到一种简单粗暴的方式，经测试后确实有效。1.在Fiddler的选项中操作移除现有证书–见下面的 移除证书 方法。2.退出Fiddler。3.打开windows资源管理器，输入 %userprofile%\AppData\Roaming\Microsoft\Crypto\RSA ，回车打开；4.将该目录下的文件夹删除即可（删除之前以防出问题可以备份一下）。5.Fiddler重新添加证书了–见下面的 安装证书 方法

Fiddler:Unable to configure Windows to Trust the Fiddler Root certificate
type: item
date: 2023-06-25T18:07:00+08:00
description: Fiddler 安装https证书会出现错误提示：fiddle-Unable to configure Windows to Trust the Fiddler Root certificate.The LOG tab may contain more information要解决这个问题的话，首先需要cd到你安装Fiddler的目录，然后输入下面这句话：makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2024出现succeeded就算是执行成功了。上面的命令意思是在Fiddler安装目录下（安装时自带的）创建证书，makecert.exe就是个创建证书的工具，后面接了一些参数：-n指定主题的证书名称，此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称，并加上前缀 CN=，O=....，下面是前缀的一些含义：CN=commonName OU=organizationUnit O=organizationName L=localityName S=stateName C=country-m后面的数字是有效期持续时间（月份数量），-b后面是证书生效时间.注意最后这个日期 一定要大于现在的日期 否则创建证书是过期的。执行成功后就会出现新的证书，如下图，点击是就可以了最后再重启Fiddler，就可以抓取https的数据了。

解决selenium-wire response body 乱码
type: item
date: 2023-06-12T02:31:00+08:00
description: 默认情况下，selenium-wire以字节的形式返回正文响应。文档中说："响应的正文以字节的形式返回。如果响应为空，返回值将是空的，即b''。很多时候返回的正文被服务器编码或者压缩，会导致无法直接解码。（设置disable_encoding可以防止这种情况。）要解码一个已编码的响应体，可以这样做：from seleniumwire.utils import decode body = decode(response.body, response.headers.get('Content-Encoding', 'identity'))

python 抓取 HTTP request？
type: item
date: 2023-06-09T00:49:00+08:00
description: import pcap #安装的是pypcap，本博客有安装方法，不过也比较乱，试试吧。 import dpkt import socket pc = pcap.pcap() for ptime, pdata in pc: eth = dpkt.ethernet.Ethernet(pdata) if eth.data.__class__.__name__ == 'IP': ip = eth.data; src = socket.inet_ntoa(ip.src); dst = socket.inet_ntoa(ip.dst); tcp = ip.data; # tcp.dport tcp.sport try: request = dpkt.http.Request(tcp.data) except (dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError): continue if request.headers['host']=='www.****.com':#自行替换需要抓的网站。 print(request) host=request.headers['host'] connection= request.headers['connection'] accept=request.headers['accept'] user_agent = request.headers['user-agent'] accept_encoding=request.headers['accept-encoding'] accept_language=request.headers['accept-language'] cookie=request.headers['cookie'] break print('-----------') print('host->%s'%host) print('connection->%s'%connection) print('accept->%s'%accept) print('user_agent->%s'%user_agent) print('accept_encoding->%s'%accept_encoding) print('accept_language->%s'%accept_language) print('cookie->%s'%cookie)转载地址：https://www.zhihu.com/question/265494765https://www.cnblogs.com/MikeZhang/archive/2022/10/29/pythonUseLibpcap20221029.html

使用php运行python文件
type: item
date: 2023-06-08T17:11:00+08:00
description: 可以使用PHP的exec函数来运行Python文件。exec函数调用系统命令，并返回执行结果。以下是在PHP中运行Python文件的示例代码：<?php // 要执行的Python文件路径 $pyfile = "/path/to/your/python/file.py"; // 执行Python文件 $result = exec("python {$pyfile}"); // 输出执行结果 echo $result; ?>在上面的示例中，我们使用了Python的默认路径，如果你的Python安装在其他路径下，可以根据实际情况进行修改。此外，如果Python文件需要传递参数，可以在exec函数中添加参数，例如：// 要传递的参数 $param1 = "Hello"; $param2 = "World"; // 执行Python文件并传递参数 $result = exec("python {$pyfile} {$param1} {$param2}");在Python文件中，可以使用sys.argv获取传递的参数：import sys # 获取传递的参数 param1 = sys.argv[1] param2 = sys.argv[2] # 输出参数 print(param1, param2)需要注意的是，使用exec函数执行Python文件可能存在安全问题，因此需要对传递的参数进行过滤和校验，避免出现安全漏洞。如果在PHP中使用exec函数时出现"Warning: exec() has been disabled for security reasons"的错误提示，说明PHP被配置为禁止调用exec函数。这种情况下，需要修改PHP的配置文件php.ini，允许调用exec函数。具体操作如下：1.找到PHP的配置文件php.ini： 可以使用phpinfo()函数查看PHP的配置信息，其中包括php.ini的路径，示例代码如下：<?php phpinfo(); ?>运行上面的代码，会输出PHP的配置信息，其中有一项是"Loaded Configuration File"，表示PHP的配置文件路径。在该路径下找到php.ini文件。2.修改php.ini文件： 在php.ini文件中找到disable_functions选项，将exec函数从该选项中删除，示例代码如下：disable_functions = passthru,shell_exec,system修改后的结果如下：disable_functions = passthru,shell_exec,system将其修改为：disable_functions = passthru,shell_exec保存修改后的php.ini文件，并重启Web服务器使其生效。此后就可以在PHP中调用exec函数了。需要注意的是，因为exec函数容易导致安全问题，因此在调用exec函数时需要对传入的参数进行过滤和校验，避免出现安全漏洞。原文地址：https://blog.csdn.net/weixin_39934453/article/details/130236126