<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hacker_lpy的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hacker_lpy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hacker_lpy]]></copyright><item><title><![CDATA[python全自动爬取m3u8网页视频（各类网站都通用）]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/147694131</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/147694131</guid><author>hacker_lpy</author><pubDate>Sun, 04 May 2025 16:15:14 +0800</pubDate><description><![CDATA[M3U8 是一种基于文本的播放列表文件格式，主要用于 ​​HTTP Live Streaming（HLS）流媒体协议​​，由苹果公司开发并广泛应用于在线视频和音频传输中。M3U8它实际上就是用一个文本文件（一般为.m3u8后缀）来定义视频和音频等流媒体的播放行为。我们能不能做成一个通用的视频下载脚本，自动获取分析网页，自动获取M3U8文件，自动下载ts视频文件，自动合并视频文件呢。当前可以的。可以捕获当前页面的所有M3U8视频进行自动下载]]></description><category></category></item><item><title><![CDATA[虚拟硬盘数据恢复(vmdk、vdi、vhd等虚拟磁盘文件)]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/142315124</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/142315124</guid><author>hacker_lpy</author><pubDate>Tue, 24 Sep 2024 23:11:13 +0800</pubDate><description><![CDATA[首先给自己做了难么多尝试后总结一些经验，可能让很多对磁盘分区，文件系统不熟悉的读者遇到类似的问题时少走很多弯路。（1）很多磁盘恢复、磁盘分区工具是可以直接读取虚拟机使用的虚拟磁盘文件（包括vdi,vmdk,vhd等格式的虚拟磁盘文件）的。比如windows下的diskgenius磁盘恢复工具，就可以直接打开这些虚拟磁盘文件，但是diskgenius并不支持所有的文件系统类型，比如Linux下常用的LVM文件系统类型，diakgenius就只能显示出虚拟磁盘文件里面的分区信息，无法读取分区里面的数据。]]></description><category></category></item><item><title><![CDATA[加密隧道技术]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/136282986</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/136282986</guid><author>hacker_lpy</author><pubDate>Sat, 02 Mar 2024 18:33:43 +0800</pubDate><description><![CDATA[在现在的互联网上传输数据，首要考虑的就是安全。这关乎到你的隐私，个人信息，财产安全等等重大问题。如果你的程序本身传输的信息没有加密，也可以通过其他辅助方式让你的通信加密。一些工具的就是为了解决这样的场景的，即数据先通过源端代理，让你的所有通信数据都加密，然后到达目的后再使用目的端代理进行解密后转发给目标进程。即加密隧道的简单示意图如下所示：加密隧道的起始即为源端代理和目的端代理。其中数据发送进程和源端代理可以是同在一个主机的不同进程，也可以是分属不同的主机。目的端代理和数据接收进程也一样。]]></description><category></category></item><item><title><![CDATA[openvpn配置使用静态密钥]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/136280529</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/136280529</guid><author>hacker_lpy</author><pubDate>Sun, 25 Feb 2024 15:07:24 +0800</pubDate><description><![CDATA[openvpn客户端在和服务端建立连接时，一般建立ssl通信，流量都需要经过加密。正常建立ssl连接的时候，流程是很复杂的，需要握手信息，需要验证证书，需要协商和交换对称加密密钥。这个对称加密密钥是用来做什么的呢？其实ssl在建立连接前期的协商步骤中使用非对称加密算法（一般为RSA算法），是为了交换某些生成后续对称加密密钥所必须的信息，避免在网络中明文传输对称加密的密钥。一旦协商完成，对称密钥也就交换完成，后续的通信，都是使用对称加密来通信。为什么不能全程都使用非对称加密来加解密数据？]]></description><category></category></item><item><title><![CDATA[VirtualBox 网络连接配置]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/135269977</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/135269977</guid><author>hacker_lpy</author><pubDate>Thu, 28 Dec 2023 15:09:49 +0800</pubDate><description><![CDATA[我们在windows上使用linux虚拟机，一般网络需要两个要求：1、虚拟机里面要能访问到外网（互联网） 2、能从宿主机连接进入到虚拟机 在virtalbox的设计看来，这两个需求是独立的，因此就设计了不同的网络连接方式。最常用的是 网络地址转换(NAT)和 仅主机(Host-Only)网络。其中网络地址转换(NAT)是为了使虚拟机能通过虚拟的 NAT设备接入外网，而仅主机(Host-Only)网络就是为了能从宿主机能访问到虚拟机。]]></description><category></category></item><item><title><![CDATA[std::cin C++标准输入流]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/131153823</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/131153823</guid><author>hacker_lpy</author><pubDate>Sun, 11 Jun 2023 15:57:23 +0800</pubDate><description><![CDATA[用了那么久的c++，都没有深入去学习一下c++的标准输入流(cin)，标准输出流的(cout)的用法，一般只是简单的使用去获取一个字符串或者几个整型输入。但是发现如果遇到了比较复杂的输入，这简单的三板斧就不够用了，需要考虑空白符（空格，tab，换行符等）的影响。而c++又提供了cin.get,cin.getline,std::getline,等不同的类方法和全局函数，没深入的了解的咋一看就有点晕，这几个函数到底有啥区别？又有哪些坑？下面是我自己的一些补充。]]></description><category></category></item><item><title><![CDATA[linux C/C++ 后端服务问题排查(gdb, pstack,valgrind)]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/129305055</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/129305055</guid><author>hacker_lpy</author><pubDate>Thu, 02 Mar 2023 18:50:32 +0800</pubDate><description><![CDATA[在linux上运行的c/c++程序，一般是没有界面的，一般都需要打印运行日志，通过日志来定位问题。但是日志不是万能的，有时候日志没有输出我们的想要的信息，如果增加日志还要程序重新编译部署发布，如果是生产上的服务，为了排查一个问题就要发布版本，那这肯定是得不偿失的。除了日志，linux上我们还有很多手段去帮助我们排查程序问题，就是linux提供了很多有用的命令行工具让我们查找问题。这里我总结了经常使用的几个命令的用法，gdb, pstack,valgrind。]]></description><category></category></item><item><title><![CDATA[在CentOS下安装MySQL]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/126051497</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/126051497</guid><author>hacker_lpy</author><pubDate>Fri, 29 Jul 2022 11:34:47 +0800</pubDate><description><![CDATA[最近自己centos虚拟机里面的mariadb忘记了密码，登录不进去了，解决安装一个mysql。]]></description><category></category></item><item><title><![CDATA[windows换行符(\r\n)与unix换行符(\n)互转]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/124766490</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/124766490</guid><author>hacker_lpy</author><pubDate>Sat, 14 May 2022 12:23:16 +0800</pubDate><description><![CDATA[因为windows下文本的换行符为\r\n,而unix下只为\n,因此windows换行符(\r\n)与unix换行符(\n)互转，最直观的做法是直接用sed替换。
windows换行符转unix换行符：
sed -i -e 's/\r\n/\n/g' test.txt
unix换行符转windows换行符：
sed -i -e 's/\n/\r\n/g' test.txt]]></description><category></category></item><item><title><![CDATA[基于 gmssl实现的sm2加密（C++）]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/124211114</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/124211114</guid><author>hacker_lpy</author><pubDate>Sat, 16 Apr 2022 11:47:55 +0800</pubDate><description><![CDATA[项目中需要用到sm2加密，在网上搜索了一下相关的库，发现只有openssl和gmssl这两个库可以用，于是基于gmssl库做了封装，gmssl的版本是：GmSSL 2.5.4 - OpenSSL 1.1.0d 19 Jun 2019

搞这个库的确要费不少功夫，现在分享出来给需要的人。目前我是用在linux环境中，因此编译成linux动态库，并且屏蔽相关库的头文件和符号，只暴露sm2加解密相关的接口符号，gmssl库通过静态库的方式引用。...]]></description><category></category></item><item><title><![CDATA[解决Linux多个动态库间的符号冲突问题]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/124131106</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/124131106</guid><author>hacker_lpy</author><pubDate>Tue, 12 Apr 2022 18:42:33 +0800</pubDate><description><![CDATA[那linux下有没有类似window下的显式导出功能呢，有的。下面是介绍一种常用的只导出指定符号的方法。
    1、加编译器选项fvisibility=hidden，加了这个选项后，默认的符号都不会导出

    2、在需要导出的函数或者类名前加__attribute__ ((visibility("default")))
一种是在编译期解决，就是在编译动态库的是加参数-Wl,-Bsymbolic 这个参数是传给链接器的，这个编译参数的作用是：优先使用本动态库中的符号，而不是全局符号。
]]></description><category></category></item><item><title><![CDATA[解决window下使用git clone时没有提示输入用户名密码认证的问题（gitlab使用https协议）]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/124078021</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/124078021</guid><author>hacker_lpy</author><pubDate>Sun, 10 Apr 2022 15:04:00 +0800</pubDate><description><![CDATA[最近在我的windows电脑上，使用了一个新的gitlab账号去拉取新建的git project代码，使用git clone xxxx.git 的时候直接提示找不到项目或者该账号没有权限查看，连提示输入用户名密码验证的步骤都没有，很纳闷，这个项目就是我自己在网页端建的，不可能不存在或者没有权限，在网上找了下原因，原来是 window保存的凭据在作怪。因为之前用其他同事的账号在gitlab上拉过其他项目的代码，window就记住了这个用户名密码，后面再访问gitlab的时候，因为默认使用的是windows保存]]></description><category></category></item><item><title><![CDATA[awk 命令使用示例]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/124019873</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/124019873</guid><author>hacker_lpy</author><pubDate>Thu, 07 Apr 2022 16:34:49 +0800</pubDate><description><![CDATA[1、 如何在awk脚本内部调用shell命令
2、awk 脚本内部如何获取外部变量
3、awk 数组
4、使用awk 去除重复行
比较简洁的写法是下面这样：

echo -e "aaa\nbbb\naaa"| awk '!a[$0]++'
但是上面的写法比较难理解，比较易懂的写法如下：
echo -e "aaa\nbbb\naaa" | awk '{ if (!a[$0]++) { print $0 } }'
5、awk 脚本内部给外部变量赋值]]></description><category></category></item><item><title><![CDATA[keepalive+Nginx 配置实现高可用]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/121476722</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/121476722</guid><author>hacker_lpy</author><pubDate>Mon, 22 Nov 2021 17:46:43 +0800</pubDate><description><![CDATA[参考这篇文章，写的简介易懂

Linux集群之keepalive+Nginx
]]></description><category></category></item><item><title><![CDATA[windows 下查看库文件符号的工具dumpbin(类似linux的nm)]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/119036958</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/119036958</guid><author>hacker_lpy</author><pubDate>Fri, 23 Jul 2021 15:38:18 +0800</pubDate><description><![CDATA[1、对于静态库
dumpbin -SYMBOLS 库文件
在命令行中使用上述指令查看库中的显示函数和数据对象。

2、对于动态库
dumpbin -EXPORTS 库文件
在命令行中使用上述指令查看库中的显示函数和数据对象。

只要安装了vs，就有这个工具，这个工具不能在一般的命令提示符下执行，因为找不到这个命令。可以在“vs 命令提示符”中执行，怎么打开这个命令提示符呢？如下：

开始-&gt;所有程序-&gt;Microsoft Visual Studio 2010-&gt;Visual Studio ]]></description><category></category></item><item><title><![CDATA[解决centos ssh可以使用却无法传文件的问题]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/118852167</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/118852167</guid><author>hacker_lpy</author><pubDate>Sat, 17 Jul 2021 09:41:12 +0800</pubDate><description><![CDATA[今天想在宿主机windows和虚拟机linux里面传文件，发现无论是用sz还是pscp，都无法使用，提示是SFTP的问题，上网百度了一下，解决办法是修改/etc/ssh/sshd_config文件

将

Subsystem sftp /usr/libexec/openssh/sftp-server
改为
Subsystem sftp internal-sftp

重启后就可以了，不知道这是啥原理，之前是好好的可以用，这个虚拟机是从vm ware 移植到virtual bo...]]></description><category></category></item><item><title><![CDATA[vscode远程开发 配置]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/118829375</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/118829375</guid><author>hacker_lpy</author><pubDate>Fri, 16 Jul 2021 22:49:42 +0800</pubDate><description><![CDATA[vscode 强大的功能，可以在远程机器上开发c++ go等，跟在本地开发一样，下面是我参考别人的博文进行配置的

VSCODE远程开发 golang环境配置
]]></description><category></category></item><item><title><![CDATA[解决 vscode下载go相关插件失败的问题]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/118711269</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/118711269</guid><author>hacker_lpy</author><pubDate>Tue, 13 Jul 2021 21:29:34 +0800</pubDate><description><![CDATA[很多初学者使用vscode的时候，出现最多的问题就是插件安装失败的问题，而插件安装失败最多的问题就是下载失败，本文主要解决go插件安装失败的问题

因为一般go是插件都是国外网站上的，我们国内很多时候是下载不下来的，因此可以使用一个代理去访问，只需要在安装go的机器上执行下面这两条命令

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

第一个命令是开启go的模块管理功能，这是go新引入的一种包管理方式，是基于go.m]]></description><category></category></item><item><title><![CDATA[解决vscode在编译c++文件时控制台输出乱码问题]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/115536517</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/115536517</guid><author>hacker_lpy</author><pubDate>Fri, 09 Apr 2021 09:17:32 +0800</pubDate><description><![CDATA[刚使用vscode的时候，配置就花了不少功夫，刚开始编译c++文件的时候就出现了乱码，后来自己摸索了一下解决了，贴一下解决过程，希望能帮到遇到同样问题的朋友。

前提是我使用的MSVC编译器cl.exe

这个乱码的原因应该是编译器cl.exe输出的编码是GBK，而如果使用vscode的powershell，默认是UTF8编码，这样的话，cl.exe的错误信息在powershell上输出，就是乱码,解决问题的关键就是指明使用window的命令提示符shell，而不是使用vscode自带的powershell]]></description><category></category></item><item><title><![CDATA[vscode c++开发配置]]></title><link>https://blog.youkuaiyun.com/hacker_lpy/article/details/115445647</link><guid>https://blog.youkuaiyun.com/hacker_lpy/article/details/115445647</guid><author>hacker_lpy</author><pubDate>Mon, 05 Apr 2021 19:07:30 +0800</pubDate><description><![CDATA[我原来使用的是Microsoft Visual Studio进行c++程序开发的，最近想试试用vscode来开发，vs毕竟太庞大了，vscode更轻便一些，使用过一段时间后，发现vscode还是不错的。

首选说明，vscode只是一个代码编辑工具，代码的编译和调试，还需要安装其他的编译调试工具，比如微软的MSVC，或者使用gcc+gdb，MinGW等等。这里贴一下官方的文档：

https://code.visualstudio.com/docs/languages/cpp--这个是vscode 做c+.]]></description><category></category></item></channel></rss>