让浏览器自动移除知乎的登录弹窗(已更新)
由于某些原因,我注销了知乎的账号。但是在网页的搜索中,会出现一些知乎的内容。当我点进去会发现,知乎会强制登录才能查看内容。以前会有一个关闭的按钮,最近关闭的按钮被去除了。
作为程序员,肯定不希望阅读体验这么差,所以用 油猴工具 制作了如下脚本,自动移除弹窗,并恢复页面的滚动条。
// ==FeHelperMonkey==
// @reminder 请不要删除这部分代码注释,这是FeHelper油猴脚本能正常工作的基本条件!当然,你可以按需修改这里的内容!
// @id mf_1606719966367
// @name 关闭知乎登录
// @url-pattern https://*.zhihu.com/question/*
// @enable true
// @require-js
// @auto-refresh 0
// @updated 2020-12-01 10:03:30
// ==/FeHelperMonkey==
// 在这里,可以随便写你的代码,并且,你的代码中
// 1. 可以进行页面上的所有DOM操作
// 2. 可以访问页面上原本已挂载的所有Js变量,比如页面上已经有了jQuery,你可以直接使用
// 3. 可以依赖注入一个第三方js脚本,然后在你的代码中直接使用,如:依赖jQuery后直接使用
// 4. 好了,你的代码可以这样写:
var toast = (content,time) => {
return new Promise((resolve,reject) => {
let elAlertMsg = document.querySelector("#fehelper_alertmsg");
if (!elAlertMsg) {
let elWrapper = document.createElement('div');
elWrapper.innerHTML = '<div id="fehelper_alertmsg" width="100%" style="position:absolute;top:10px;left:50%;-webkit-transform:translateX(-50%);z-index:100">' +
'<tb style="background:red;display:inline-block;color:white;text-align:center;' +
'padding:10px 10px;margin:0 auto;font-size:20px;border-radius:8px;">' + content + '</tb></div>';
elAlertMsg = elWrapper.childNodes[0];
document.body.appendChild(elAlertMsg);
// elAlertMsg = document.getElementById("fehelper_alertmsg");
// elAlertMsg.style.left=(document.body.clientWidth-elAlertMsg.offsetWidth)/2+"px";
} else {
elAlertMsg.querySelector('p').innerHTML = content;
elAlertMsg.style.display = 'block';
}
window.setTimeout(function () {
elAlertMsg.style.display = 'none';
resolve && resolve();
}, time || 1000);
});
};
(()=>{
toast("【菜鸟公园】关闭知乎登录弹窗",2000).then(()=>{
let a = document.getElementsByClassName('Modal-wrapper');
for (i=0;i<a.length;i++){
a[i].parentNode.removeChild(a[i]);
}
document.documentElement.style.overflow='visible';
});
})();
如何在Windows中体验极致的Linux开发环境
1. 背景
相当长的一段时间,我的工作平台都是MAC,清爽干净的界面,没有广告烦扰,方便的快捷键,好用的触摸板等等。但是换了工作之后,公司配备的是一台Windows台式机,虽然可以带自己的笔记本工作,但是总有些不便。于是一直在折腾Windows下的Linux开发环境。
之前一直是用 vm 搭建,也没有觉得不方便的地方。但是最近一直被安利 wsl2 。于是就安装试用了一番。发现在我的开发环境下完全可以抛弃 vm 了。那么对比 vm 有哪些优势劣势呢。
优势
- 不用每次点击启动vm,然后点开机或者恢复。直接在终端中选择打开。
- 不用配置网络,实际上wsl2 你也没有机会配置。wsl2深度融合Windows环境,在wsl启动的服务,在Windows 可以直接
localhost:port访问 - 挂载了本地磁盘,虽然vm也可以共享,但是没有这个方便。
劣势
- 只有Ubuntu可以选择
- 没有systemd,需要自己些reload脚本
- 启用hyper v之后,影响vm和模拟器运行
2. 安装WSL2
- 从
启用或关闭 Windows 功能里勾选适用于 Linux 的 Windows 子系统和虚拟机平台,重启电脑 - 以管理员身份启动
powershell,输入下面指令wsl --set-default-version 2 - 如果提示要升级内核,按照提示走
- 从 Microsoft Store 下载最新 Linux 分发版, 下载完后点击启动,安装
- [ 可选 ] 换源,使用阿里Ubuntu镜像。 换完之后执行
sudo apt update - [ 可选 ] 从 Microsoft Store 安装 Windows Terminal
3. 搭建开发环境
nginx,php,fpm,mariadb,redis,golang,openssh 等软件均可以通过 apt install 来安装。
通过 service xxx start|restart|stop 来控制状态
- 特别说明
mariadb安装完后需要配置root账号密码,参考文章
# 第一次设置密码
sudo mysql_secure_installation
# 控制台登录, 如果有报错,记得使用sudo
sudo mysql -u root -p
# 修改mysqld 绑定IP
sudo vim /etc/mysql/my.cnf
# 注释下面的语句
bind-address = 127.0.0.1
# php连mysql需要安装扩展
sudo apt install php-mysql
# fastcgi listen字段,需要跟nginx.conf 对应
sudo vim /etc/php/7.4/fpm/pool.d/www.conf
- Ubuntu20.04
apt install的服务配置文件目录整理
| 服务 | 默认路径 | 默认配置文件名 |
|---|---|---|
nginx |
/etc/nginx/nginx.conf |
nginx.conf |
maraiadb |
/etc/mysql/mariadb.conf.d/50-server.cnf |
my.conf |
redis |
/etc/redis/redis.conf |
redis.conf |
php-fpm |
/etc/php/7.4/fpm/php-fpm.conf/etc/php/7.4/fpm/pool.d/www.conf |
php-fpm.conf |
php |
/etc/php/7.4/cli/php.ini |
php.ini |
sshd |
/etc/ssh/ssh_config |
ssh_config |
4. 总结唠嗑
关于wsl2的使用说明,建议阅读官方文档
在 windows 宿主机使用 localhost 就能登录wsl2,不要被国内博客误导!!! 前提是重新安装 openssh 服务。
最后两个安装步骤虽然是可选,但是强烈建议做完,能很大程度的提升使用体验。
换源的好处自然是加快包安装速度
使用 windows Terminal 时让我有点在 MAC 下工作的感觉。总结下有几点:
– 支持多标签页
– 能快捷进入wsl,下拉菜单中点选进入
– 界面重新设计,很清爽,有 Linux 终端的味道,离 MAC 还差点
– 支持 Ctrl C 复制,Ctrl V 粘贴,我很喜欢这个设定。并且 Ctrl C原本的中断功能不受影响
wsl 不支持 systemd ,所以不用折腾开机启动了。需要的服务建议通过 sudo service 服务启动,或者写一个 shell 脚本。
wsl把 windows 磁盘挂载在 /mnt/ 目录下,可以对该目录下文件进行读写操作。
配合 VS CODE 敲代码,只需要安装一个Remote - WSL插件。在 远程资源管理器里选择 WSL Targets 一键连接。 本地开发,即在服务器上开发。NICE
测试过 php 项目 和 golang 的 web 项目,目前没有发现任何功能上的问题。
5. 目前遇到的?坑?
由于我装 ohmyzsh 了,它在git的目录会有额外的操作,所以进入到挂载在 /mnt/ 下面的目录时,会有一段时间读取过程,耗时较长。不用 ohmyzsh 不会有问题。
一个方便的数据库操作shell脚本
用法说明
这个脚本可以方便的备份和恢复数据库,而且通过show参数可以用来查看该实例中有多少个数据库。
唯一需要手动操作的是到脚本里配置账号密码。账号密码放在脚本的目的是为了避免每次输入。
导出文件格式是tar.gz。导入的文件格式是zip。这部分跟我的习惯有关系,我备份的数据库都会在本地进行处理压缩成zip上传,就是为了防止没有经过处理的数据库直接拿去导入。
#!/bin/bash
# 这是一个自动化导出MySQL数据库的脚本
# 修改此处
user="root"
passwd="123456"
port=3306
host="127.0.0.1"
dblist=(
"test"
)
root=`pwd`"/"
function printUsage {
echo "Usage:"
echo "$0 [-t dump|import|show] [-f file]"
echo "导出/导入数据库脚本 v1.1"
echo "导出的sql以数据库命名。"
echo "导入的文件同样是提取sql文件名!"
echo "show 参数可以打印数据库名,用于替换dblist"
echo "dump文件是tar.gz的压缩包,import的文件是zip的压缩包"
}
function printParaErr {
echo "参数错误!"
}
function printFileNotExist {
echo "文件不存在!"
}
function printFileNotSupport {
echo "仅支持压缩文件!(zip)"
}
function cleanOutDir {
if [ -d $outDir ]; then
echo "清理临时目录:" $outDir
rm -rf $outDir
fi
}
function addNote {
echo "是否添加备注文件?[回车跳过]"
read note
if [ ${#note} -gt 1 ];then
cd $root$outDir
echo $note > note.txt
fi
}
if [ $# == 0 ]; then
printUsage
exit 0
fi
GETOPTOUT=`getopt t:f: "$@"`
set -- $GETOPTOUT
while [ -n "$1" ]
do
case $1 in
-t)
type=$2
shift
;;
-f)
inputfile=$2
shift
;;
--)
shift
break
;;
*)
printParaErr
printUsage;
exit 1;
;;
esac
shift
done
if [ $type == 'dump' ]; then
echo "目标数据库为 $user@$host:$port"
elif [ $type == 'import' ]; then
if [ ! -f "$inputfile" ]; then
printFileNotExist
printUsage
exit 0
fi
ext_name="${inputfile##*.}"
if [ $ext_name != 'zip' ]; then
printFileNotSupport
printUsage
exit 0
fi
echo "导入源数据为: $inputfile"
echo "目标数据库为: $user@$host:$port"
elif [ $type == 'show' ]; then
echo "当前实例存在的数据库:(已排除系统数据库)"
else
printParaErr
printUsage;
exit 1;
fi
# echo "请输入数据库密码,按回车键结束"
# stty -echo # 设置输入字符不回显
# read passwd
# stty echo # 取消不回显状态
runTime=`date '+%Y%m%d%H%M'`
outDir="./sqlHandler_$runTime/"
cleanOutDir
if [ $type == 'dump' ]; then
echo "创建导出目录:" $outDir
mkdir -p $outDir
for db_name in ${dblist[*]}; do
cmd="mysqldump -h $host -u $user -P $port -p$passwd $db_name"
echo $cmd | sed "s/-p$passwd/-p****/g";
$cmd > "$outDir$db_name.sql";
done
cd $outDir
tar cvzf "dbbak_$runTime.tar.gz" *
rm -rf *.sql
addNote
echo "导出文件为:"
echo $root$outDir"/"`ls|grep tar`|sed -e "s/\/\//\//g" -e "s/\/\.\//\//g"
elif [ $type == 'import' ]; then
echo "创建临时目录:" $outDir
mkdir -p $outDir
unzip -d $outDir $inputfile
files=$(ls $outDir)
cd $outDir
echo "mysql command:"
for file in ${files[*]}; do
db_name="${file%.*}"
# ext_name="${file##*.}"
cmd="mysql -h $host -u $user -P $port -p$passwd --default-character-set=utf8 $db_name"
echo -e "\t"$cmd " < $file" | sed "s/-p$passwd/-p****/g";
$cmd < $file
done
cd $root
cleanOutDir
# $cmd < $inputfile
elif [ $type == 'show' ]; then
rm -rf $outDir
cmd="mysql -h $host -u $user -P $port -p$passwd "
$cmd -e "show databases;" |grep -v -E 'Database|mysql|information_schema|performance_schema'|sed -e 's/^/"/g' -e 's/$/"/g'
# echo $result
fi
if [[ $? == 0 ]]; then
echo "操作完成!";
else
echo "┗━━ 操作失败!";
fi
手机app https抓包步骤一揽
1. 工具准备
- WireShark
下载地址 开源工具,免费使用,支持WIN与OSX平台。
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 -
Fiddler
下载地址 开源工具,免费试用,支持WIN平台,OSX需要自行编译。
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
2. 如何使用
http的抓包使用Fiddler 或者其他代理软件很直接的就可以完成。但是https的抓包因为经过了加密,所以并不能直接看到抓包的内容,只能看到密文。那么如何使用http来进行抓包呢?


设置完成后,关闭软件重新打开。条件允许的情况下最好是重启电脑。
然后在手机里输入网址 http://pc.ip:8080 看是否出现如下截图。出现表示fiddler设置正确。

iOS只能下载该证书,要安装证书需要2个步骤。 安卓机暂不清楚。
1. 点设置-> 通用 -> 描述文件。 找到刚下载的“DO_NOT_TRUST_FiddlerRoot”点击安装
2. 点设置-> 通用 -> 关于本机 -> 证书信任设置。 点击完全信任。
然后打开浏览器,输入任意网址,能正常打开即表示完成。
3. 抓包结果
现在打开手机app,便可以看到fiddler里出现http和https的访问记录了。看下面的实例。

MAC & WIN 平台效率工具清单
1. 数据库GUI工具
1.1 Sequal Pro
官方的release版本已经在2016年停更了,但是master分支仍然有人在更新。我认为这是OSX平台下最轻量,使用最舒服的DB GUI工具,没有之一。
功能特色:交互简洁,免费开源,支持查询结果集增删改。
下载:这里存放的是我编译的版本
1.2 DBeaver
DBeaver 是对目前市面流行的DB支持最全面的工具,而且社区版足够用。唯一的缺点是使用java编写的,有时候会卡。
2. Redis GUI工具
2.1 Medis
Medis是一款基于electron构建的Redis 管理工具,非常的好用。在大数量key的情况下吊打RedisDesktopManager。
官方不再提供OSX平台的安装包,在MAS上有提供下载,但是版本太老。同样下面分享我的编译版本。
下载:这里存放的是我编译的版本 提取码: pan6
3. API调试
3.1 PostMan
功能很齐全的API调试工具,界面也很优化。支持配置云同步。结果json格式化。
下载请到官网
4. 绘图工具
4.1 OpenBoard —— 一款打草稿的工具
全平台的开源软件,结合绘图板,完全可以抛弃草稿本,而且带录屏功能,可以用来制作课件视频。

5. 终端工具
5.1 Mac平台
iterm2 + ohmyzsh
5.2 Win平台
XShell 有两个功能我非常喜欢。
– 对终端显示文本可以自定义高亮,支持正则表达式,并且无需更改主机的配色。
– 支持ssh通道的代理,通过代理连接梯子服务器简直太舒服了。iterm2怎么配置摸索好久还是没找到解决方案。
附上我的正则高亮配置
| 用途 | 表达式 |
|---|---|
| 时间 | \d{4}[\-\/]\d{2}[\-\/]\d{2}\ \d{2}\:\d{2}\:\d{2} |
| API | (?<=\[)\/(\S)*(?=(\]\[)) |
| IPv4 | ((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3} |
6. 开发环境搭建工具
6.1 oneinstack
php,db,nosql db,nginx,还有各种组件。懒人开发必备。
