首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
11
篇与
的结果
2024-09-27
python3.6.15的编译安装
背景 现存一些古老的站点使用了旧的 ssl 版本,现在新版本的 python 无法使用,大概报错 unsupport protocol,在测试了一番之后无论如何也解决不了,无法更换目的站点的 ssl 版本,那只能更换本地的 python 版本了 版本选择 这个站点在其他 python3.6 的机器上使用 requests 可以执行,所以计划本机再安装一个 python3.6.15 安装遇到的问题 安装完成后使用 pip3 总是 segmentation fault core dump,解决办法参考文档: https://stackoverflow.com/questions/74553858/how-to-fix-python-pip-segmentation-fault-core-dumped-response-from-virtualenv 补丁方案: https://github.com/pyenv/pyenv-virtualenv/issues/410#issuecomment-1125942002 然后根据步骤编译安装 cd ~ mkdir py36 mkdir py36/tempfiles cd py36/tempfiles curl https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz --output Python-3.6.15.tar.xz tar -xJvf Python-3.6.15.tar.xz cd Python-3.6.15 vim alignment.patch # Use your preferred text editor # Paste the contents of the patch, save and quit patch -p0 < alignment.patch cd .. Python-3.6.15/configure --prefix=/home/<username>/py36 --enable-optimizations --with-lto make make install cd .. rm -rf tempfiles 新的问题 事情往往总是没有那么顺利 参照其他支持的机器先安装了低版本的 openssl1.0.2u,然后 python3.6 使用参数 --with-openssl=/usr/local/openssl 来编译安装,但是结果查看 ssl 版本的时候仍然不对,查看命令 import ssl print(ssl.OPENSSL_VERSION) 大概知道是参数没有成功,果然查看支持的参数 ./configure --help 是没有 ssl 相关的参数的 所以接下来大量检索了上网的办法,大概如下: 编译之前指定参数 export LDFLAGS="-L/data/software/openssl1.0.2/lib" export CPPFLAGS="-I/data/software/openssl1.0.2/include" 修改 python 的源码文件 Modules/Setup,取消注释,并且修改为实际 openssl 路径 SSL=/data/software/openssl1.0.2 _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto 再次编译安装。这次编译都通不过了,提示找不到 libssl.so.0.0 接下来请教了 chatgpt,与网上的方案基本没有差别,所以仍然无效果 柳暗花明 最后突发奇想,咱们是 openssl 没法编译上,但我也不是必须要在这台机器上编译,于是我把其他编译好的机器发到这台上尝试运行,结果报错找不到 libssl.so.10 接着把安装的 openssl 库文件 libssl.so.0.0 连接到相关目录(通过 ldconfig -pv查看一般放在哪里),再次执行,成功运行 后续发现 pip3 是执行不了的,因为安装的目录不一致,python 安装目录下的所有脚本指定了 python 命令路径, 干脆在其他机器重新编译了安装路径保持一致 但 pip3 命令还是无法执行,缺少 libffi.so.6 库,于是尝试静态编译 ./configure --prefix=/data/software/python3.6 --enable-shared --enable-static 结果无效果,反而 python 命令还要多增加一个动态库才能正常执行了, 在 python/lib 下链接到系统动态库目录后,仍然是 libffi 的错误,ubuntu 安装的是 libffi8,而源机器是6。猜测有两个方案: 可以尝试在编译python的时候使用 libffi8 把源机器的 libffi.so.6 发送到目的机器的动态库目录 急着使用,所以先尝试了方法2,目前基本上代码执行都没问题,后续测试方法1
2024年09月27日
9 阅读
0 评论
0 点赞
2024-09-14
python3 requests SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure
报错 python3 requests模块请求https环境报错如下内容: requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.192.21', port=443): Max retries exceeded with url: /web/wdashboard/cn/summary.html (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure 一开始以为是不支持 sslv3 的问题,使用 openssl 测试发现服务端是使用的 tlsv1.2 ,那就不是协议问题,经过检索后确定是加密套件不匹配导致 解决办法 安装旧版本 requests==2.24.0 和 urllib==1.25.11 然后在请求的时候增加 verify=False,不安装这两个旧版,verify不生效 requests.get(url=url, headers=headers, verify=False) 可以使用 pip3 list 查看已经安装的版本,然后使用 pip3 uninstall 卸载 再使用 pip3 install requests==2.24.0 安装指定版本
2024年09月14日
7 阅读
0 评论
0 点赞
2024-07-05
python打包二进制、编译代码
需求和目标 在python代码中如果代码中有敏感信息,或者有保密需求,不想直接提供代码给用户,可以通过以下途径来实现: 使用 pyinstaller 来构建二进制的执行文件 编译为 pyc 的执行文件 编译为 pyd 的执行文件 各优缺点 方案1: 在客户端运行环境满足的情况下可以很好的分发执行,并且能够一定程度的加密,但是可以被反编译,而且还有一个问题是如果有多个py文件作为模块,被打成二进制后无法被主脚本import导入 方案2:可以满足加密的需求,并且还比较方便,是官方自带的方法,目前测试发现 pycdc 反编译 只能获取到部分内容,看还原的代码,变量的定义是拿到了,但是函数全部没有打印出来,但如果使用 pycdas 反汇编貌似可以解析出来函数的执行流程,不过对于不熟悉的人来说从汇编还原还是比较难的 方案3: pyd 貌似听说是最难破解的,但是比 pyc 麻烦,所以暂时未测试 二进制、编译过程 使用 pyinstaller 打包二进制如下: # 首先安装 pyinstaller pip3 install pyinstaller # 安装后的文件在 python/bin 目录下,所以需要链接一下或者此目录加入环境变量 pyinstaller checklogin.py --onefile 编译 pyc 的方式: # 不需要安装其他模块,直接执行就好 python3.10 -m py_compile checklogin.py PS. 遇到的问题 构建二进制或者编译文件的时候可能遇到错误: error while loading shared libraries: libpython3.10.so.1.0: cannot open shared object file 原因是共享库没有被编译出来或者导入系统,需要重新编译 python: # 主要是增加 --enable-shared ./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl-1.1.1 --enable-shared make && make install 在重新编译安装 python 之后在 /etc/ld.so.conf.d 中增加 conf 文件添加 python/lib 这个目录,然后执行命令 ldconfig && ldconfig -pv` 生效 pycdc反编译工具的安装 以上使用到的反编译、反汇编工具 pycdc , pycdas 安装,先到如下站点下载源码: https://github.com/zrax/pycdc 安装步骤: 解压代码,安装 cmake 编译器 进入到代码目录,创建 pycdc 目录,并且进入目录 执行指令 cmake .. 执行指令 make 即可生成程序
2024年07月05日
8 阅读
0 评论
0 点赞
2024-06-28
selenium使用的功能技巧
0x0 selenium连接浏览器 chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options) 0x1 selenium获取cookie cookies = driver.get_cookies() session = requests.Session() for cookie in cookies: # print(f"{cookie['name']} -> {cookie['value']}") session.cookies.set(cookie['name'], cookie['value']) 0x2 selenium导出页面源码 driver.execute_script('return document.documentElement.outerHTML') 0x3 selenium如何切换标签页 if type == 'main': # 切换回主页 driver.switch_to.window(mainhandleid) else: # 切换回dbid页 all_handles = driver.window_handles for handle in all_handles: if handle != mainhandleid: driver.switch_to.window(handle) Logging('切换tab成功') break
2024年06月28日
7 阅读
0 评论
0 点赞
2024-06-27
selenium初始化浏览器很慢的问题
问题 selenium初始化浏览器的异常现象: 所需时间很长且不稳定(可能在数分钟到十来分钟),在等待这些时间后可以正常初始化并且使用 原因 我的代码如下: chrome_options = Options() Logging('设置selenium参数中1') chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") Logging('设置selenium参数中2') driver = webdriver.Chrome(options=chrome_options) Logging('设置selenium参数完毕','info') 在三个阶段进行了测试,发现到最后 webdriver.Chrome 这里很慢,可以确定是这里的问题 经过了搜索之后发现这个问题的原因是高版本现在初始化的时候会去外网请求api来对比版本,很显然我们的网络环境是访问不到的,所以最终会超时 Exception managing chrome: error sending request for url (https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json) 这个是手动测试的时候抛出来的地址 解决方法 解决这个问题也很简单,方案有两个: 使用代理让机器能够访问到外网,这样就不会有问题了 把这个地址使用本地解析到内网,这样出错了也可以快速返回 鉴于我们以后都是使用的内网环境,无需外部网络,并且已经下载好了对应的版本,所以最终采用第二种方式,在 /etc/hosts 中增加如下内容: 127.0.0.255 googlechromelabs.github.io PS. 为什么经过了一系列的搜索才知道解决方案? 因为前面测试的时候除了时间慢,并没有给出任何异常,所以 selenium 如何打印 debug 信息呢?
2024年06月27日
5 阅读
0 评论
0 点赞
1
2
3