openwrt 自动重拨
有的 openwrt 固件不会断网自动重播,检查 /etc/ppp/options 文件是否存在如下参数,没有的话自己加上一般就好了 maxfail 0 persist 或者使用 crotab 重启接口,每天 3 点重新拨号 0 3 * * * ifdown wan && sleep 3 && ifup wan Reference: https://www.right.com.cn/FORUM/thread-4107089-1-1.html
有的 openwrt 固件不会断网自动重播,检查 /etc/ppp/options 文件是否存在如下参数,没有的话自己加上一般就好了 maxfail 0 persist 或者使用 crotab 重启接口,每天 3 点重新拨号 0 3 * * * ifdown wan && sleep 3 && ifup wan Reference: https://www.right.com.cn/FORUM/thread-4107089-1-1.html
Go 中的类型和比较 go 是一个强类型的语言,map 中要求键(key)必须是可比较的(comparable),什么是可比较呢?就是能用操作符 == 的类型, 我们知道必须两个类型一致才能比较,否则编译器会报 invalid operation: a == c (mismatched types...) 的错误,准确的说基本类型(int8,float32,string)符合上面的原则,但 golang 中又有复合类型就不一样,先来看 go 中的类型 1. 基本类型 (Basic Types) 数字类型: int8, uint8 (byte), int16, uint16, int32 (rune), uint32, int64, uint64, int, uint, uintptr. float32, float64. complex64, complex128. 布尔类型: bool 字符串类型: string 2. 复合类型 (Basic Types) 结构体(struct)类型 函数:go 中函数是一等公民,也是一种类型 数组(array):包括长度和类型,不同长度的相同类型不属于同一类型 切片(slice):切片有动态的长度和容量是一种引用类型 字典(map):底层是哈希表也是一种引用类型 指针类型(pointer) 管道(channel) 接口类型(interface) 类型重定义(Type Definitions)和类型别名(Type Alias Declarations) 讲完了类型再来看看用户可以创建自己的类型(类型重定义)和创建别名,先看类型定义 // Define a solo new type. // type NewTypeName SourceType type MyInt int type Num int 上面定义了 MyInt , Num 两个类型,虽然他们的源类型都是 int 但他们是不同的类型,所以他们是不可以比较的,但可以通过转换成相同类型的再比较如 ...
Chrome 继续访问证书错误的网页 chrome 有时访问 https 网页会出现警告 NET::ERR_CERT_DATE_INVALID Your connection is not private Attackers might be trying to steal your information from xxx.example.com (for example, passwords, messages, or credit cards). Learn more NET::ERR_CERT_DATE_INVALID 有个彩蛋 如果要继续访问只需要点击页面然后键盘输入 thisisunsafe 就可以继续访问了 或者打开控制台粘贴以下命令 sendCommand(SecurityInterstitialCommandId.CMD_PROCEED); Reference https://stackoverflow.com/questions/58802767/no-proceed-anyway-option-on-neterr-cert-invalid-in-chrome-on-macos
Manjaro 原生的字体没法覆盖全部的 Emojis 可能导致一些字体显示框框 可以通过安装 noto-fonts-emoji 将Noto Color Emoji 字体设置为默认表情符号字体来解决这个问题。Arch 应该也可以通过此方法解决 1. 安装字体 sudo pacman -S noto-fonts-emoji 2. 在 /usr/share/fontconfig/conf.avail/ 中创建 75-noto-color-emoji.conf 文件 文件内容如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Add generic family. --> <match target="pattern"> <test qual="any" name="family"><string>emoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <!-- This adds Noto Color Emoji as a final fallback font for the default font families. --> <match target="pattern"> <test name="family"><string>sans</string></test> <edit name="family" mode="append"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test name="family"><string>serif</string></test> <edit name="family" mode="append"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test name="family"><string>sans-serif</string></test> <edit name="family" mode="append"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test name="family"><string>monospace</string></test> <edit name="family" mode="append"><string>Noto Color Emoji</string></edit> </match> <!-- Block Symbola from the list of fallback fonts. --> <selectfont> <rejectfont> <pattern> <patelt name="family"> <string>Symbola</string> </patelt> </pattern> </rejectfont> </selectfont> <!-- Use Noto Color Emoji when other popular fonts are being specifically requested. --> <match target="pattern"> <test qual="any" name="family"><string>Apple Color Emoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Segoe UI Emoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Segoe UI Symbol</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Android Emoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Twitter Color Emoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Twemoji</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Twemoji Mozilla</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>TwemojiMozilla</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>EmojiTwo</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Emoji Two</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>EmojiSymbols</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> <match target="pattern"> <test qual="any" name="family"><string>Symbola</string></test> <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit> </match> </fontconfig> 3. 配置文件 sudo ln -sf /usr/share/fontconfig/conf.avail/75-noto-color-emoji.conf /etc/fonts/conf.d sudo fc-cache -f -v 然后重启电脑应该就可以了 ...
破解滑块验证码(geetest极验) 最近写爬虫遇到极验(geetest)的滑块验证码,首先想到的是用Selenium模拟人拖动滑块,那么问题来了其实主要解决下面两个问题 拖动的距离是多少 怎么模拟出像人一样再滑动 滑动距离 先来解决第一个问题,我们怎么计算拖动距离,打开chrome的审查元素查看需要拖动的图片 <div class="geetest_canvas_img geetest_absolute" style="display: block;"> <div class="geetest_slicebg geetest_absolute"> <canvas class="geetest_canvas_bg geetest_absolute" height="160" width="260"></canvas> <canvas class="geetest_canvas_slice geetest_absolute" width="260" height="160"></canvas> </div> <canvas class="geetest_canvas_fullbg geetest_fade geetest_absolute" height="160" width="260" style="display: none;"></canvas> </div> 发现有三个canvas 对应三张图片大小都是 260* 160 ,我们使用selenium执行 js 转成 base64 后再转成图片都保存下来看一下,第一张 geetest_canvas_bg 是有缺口的图片 im_bg_b64 = driver.execute_script( 'return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png");') # base64 encoded image im_bg_b64 = im_bg_b64.split(',')[-1] im_bg_bytes = base64.b64decode(im_bg_b64) with open('./temp_bg.png', 'wb') as f: f.write(im_bg_bytes) 然后第二张 geetest_canvas_slice 根据上面相同的方法保存到本地是这样的,就是一个滑块 第三张 geetest_canvas_fullbg 猜名称也能猜到是图片的全景 有上面三张图片,怎么计算滑动的距离呢,发现只要找到第一张缺口的位置坐标 x1 和第二张滑块的坐标 x2 那么 x1 - x2 就是我们要的距离,主要是找到 x1 的位置可以通过对比第一张和第三张得到,具体的方法是对比两张图像素点不同时即为 x1 的位置。因为 x2 的位置一直在左边差不多固定的位置假设离最左边为 10 个像素所以我们不需要计算 x2,以下是实现两张图片确定 x1 的代码,图片处理使用的是pillow库 ...