Leamtrop Notes


  • 首页

  • 归档

  • 标签

  • 搜索

简单实现浏览器随机 User Agent

发表于 2018-12-02

本文是关于如何修改浏览器的 User Agent,以及每次启动浏览器都能随机使用一个 User Agent,旨在实现基本的隐私保护。

User Agent

说到 User Agent,还有这么一段精彩的历史故事。如今服务提供方追踪用户的手段层出不穷,从 cookie 到浏览器指纹,cookie 还能轻易被清除,浏览器指纹包含的一系列信息就没那么容易清除了,危害性远远比 cookie 大。

浏览器指纹包含哪些信息

  • User Agent
  • 屏幕分辨率
  • 时区
  • 浏览器插件信息
  • 字体信息
  • Canvas
  • WebGL
  • HTTP ACCEPT
  • 其它

既然服务方能通过这些信息定位到你,为什么不是把这些信息都抹除掉,而是修改这些信息呢?浏览器指纹是浏览器的固有属性,要是把现代浏览器特性都禁用掉,最终只有你的浏览器是唯一没有指纹的,岂不是鹤立鸡群,一眼就能识别出你。那么,User Agent 是指纹信息里面重要的一环,我们在这一个环节做些「手脚」,就能大大降低追踪的准确率。

阅读全文 »

authbind

发表于 2018-05-01

缘起

重启 Shadowsocks 服务报了下面这段错误,显示 simple-obfs 组件绑定端口出错,想着大概是权限问题,试着换了高于 1023 的端口再没有出现错误,Google 一番之后才找到问题原因。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
● shadowsocks-libev.service - Shadowsocks-libev Default Server Service
Loaded: loaded (/lib/systemd/system/shadowsocks-libev.service; enabled)
Active: failed (Result: exit-code) since Sun 2018-04-15 21:39:41 CST; 1s ago
Docs: man:shadowsocks-libev(8)
Process: 612 ExecStart=/usr/bin/ss-server -c $CONFFILE $DAEMON_ARGS (code=exited, status=255)
Main PID: 612 (code=exited, status=255)

Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 [simple-obfs] ERROR: Could not bind
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 [simple-obfs] ERROR: bind() error
Apr 15 21:39:41 localhost systemd[1]: shadowsocks-libev.service: main process exited, code=exited, status=255/n/a
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 ERROR: plugin service exit unexpectedly
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 INFO: plugin "/usr/bin/obfs-server" enabled
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 INFO: UDP relay enabled
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 INFO: initializing ciphers... chacha20-ietf-poly1305
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 INFO: tcp server listening at 127.0.0.1:34822
Apr 15 21:39:41 localhost ss-server[612]: 2018-04-15 21:39:41 INFO: udp server listening at 0.0.0.0:443
Apr 15 21:39:41 localhost systemd[1]: Unit shadowsocks-libev.service entered failed state.

问题

由于 Shadowsocks 用 443 端口,低于 1024 的端口属于特权端口,普通用户一般没有权限使用这些端口。

解决

使用 anthbind 授权普通用户打开特权端口。

1
# setcap cap_net_bind_service+ep /usr/bin/obfs-server

后记

authbind 是由自由软件作者和 Debian 开发者 Ian Jackson 编写的开源系统工具。authbind 允许普通用户访问低于 1024 端口的特权网络服务,authbind 通过定义加载 libauthbind 库的 LD_PRELOAD 环境变量来实现。

阅读全文 »

Shadowsocks 流量混淆

发表于 2018-04-22

墙越来越高,单纯的 Shadowsocks 流加密 + OTA 流量已经能够被 GFW 识别。SIP004 草案提出使用 AEAD 算法替换原来的 流加密 + OTA。

即便是如此,非常时期仍有 Shadowsocks 代理被封,疑似 GFW 能检测出使用了 AEAD 算法的 Shadowsocks 流量。因此,有必要混淆 Shadowsocks 流量,使之更像正常的 HTTP 流量,以绕过 GFW 检测。

Shadowsocks 组织下的 simple-obfs 项目就是用于混淆 Shadowsocks 流量的工具,思路是在原来的 Shadowsocks 流量上叠加一层加密,使得 GFW 无法判断是否正常的网站流量。它支持以插件的模式和 Shadowsocks 配合使用,也支持单独运行,还能与 web 服务器同时共存。由于条件限制,所以选择插件模式来运行 simple-obfs。

阅读全文 »

在 Cygwin 下编译安装 Redis

发表于 2018-03-04

由于 Cygwin 的镜像源没有 Redis 包,Redis 不能像其它能够通过 apt-cyg 安装的工具一样被方便安装,但是可以通过编译源代码的方式来安装。

Cygwin 是模拟 Linux 环境的,不能直接编译安装,需要以下源码打补丁。

Patch

deps/hiredis/net.c 最后添加以下

1
2
3
4
5
6
/* Cygwin Fix */
#ifdef __CYGWIN__
#define TCP_KEEPCNT 8
#define TCP_KEEPINTVL 150
#define TCP_KEEPIDLE 14400
#endif

注释 src/Makefile 以下一行

1
2
FINAL_LDFLAGS+= -rdynamic /*注释掉这一行*/
# FINAL_LDFLAGS+= -rdynamic

构建

如果你的 Cygwin 还没有安装 make 和 gcc-g++,那么需要先执行以下命令安装编译环境。

1
apt-cyg install make gcc-g++

执行以下命令:

1
2
3
4
cd deps/
make lua hiredis linenoise
cd ..
make && make install

测试

编译完成后启动 Redis 测试是否编译成功。

1
redis-server

阅读全文 »

Github Pages 免费使用 SSL 以及 CDN 加速

发表于 2018-01-28

Github Pages

CloudFlare 是一家不错的反向缓存代理和 CDN 服务商,它提供 DNS 和免费 HTTPS(TLS)、性能优化和压缩资源等。

本文将介绍如何使用 CloudFlare 为 Github Pages 提供 SSL 支持、HTTP/2 以及 CDN 加速。

首先,你应该具备以下条件:

  1. 一个 username.github.io 博客或其他静态web;
  2. 一个个人域名;
  3. CloudFlare 帐号。
阅读全文 »

Shadowsocks 优化

发表于 2017-10-29

安装 Shadowsocks 之后,性能方面还有优化的余地,使用的平台是 Debian 8,这里做下记录。

对于以下优化,首先要求 Linux 内核版本 ≥ 3.5,修改相关内核参数需要切换到 root 用户。

调优 Shadowsocks 遵循以下原则:

  1. 尽可能重用端口和连接。
  2. 尽可能地扩大队列和缓冲区。
  3. 选择大时延和高吞吐量的 TCP 拥塞算法。

一、修改文件句柄数限制

首先使用 ulimit -a 查看 user resource limits,若 open files 一项的值较小(通常是 1024),则进行以下操作。

增加进程打开文件句柄数量,以便更好的处理大量的 TCP 连接。

1
$ vi /etc/security/limits.conf

增加以下两行

1
2
* soft nofile 51200
* hard nofile 51200

接下来,在开启 Shadowsocks 服务之前,先设置 ulimit

1
ulimit -n 51200

阅读全文 »

解决 “unknown terminal type” 问题

发表于 2017-10-16

SSH 登录服务器,终端不匹配可能导致某些函数不支持,执行指令之后收到以下提示:

$ top
‘rxvt-unicode-256color’: unknown terminal type.

第一种方法可以添加以下变量到 $TERM 到 .bashrc 或 .bash_profile。

1
2
export TERM='xterm-256color'
export TERM='linux'

另一种方法是复制本地终端属性文件到服务器的 $HOME 目录,推荐使用这种方法。

首先在服务器新建目录。

1
mkdir -p ~/.terminfo/r

接下来复制本地终端属性文件到服务器。

1
scp /usr/share/terminfo/r/rxvt-unicode-256color [email protected]:~/.terminfo/r/

阅读全文 »

OpenSSH 服务器安全实践

发表于 2017-09-22
1. 设置 root 新密码 设置复杂密码,可以使用密码生成器生成一个复杂密码1# passwd root 2. 创建普通用户并设置用户密码1# adduser {username} 3. 添加普通用户到 sudoers 组 执行 visudo 编辑 /etc/sudoers 文 ...
阅读全文 »

使用 strace 排查故障

发表于 2017-09-18

很多情况下,通过日志能够定位大部分问题,遇到性能等问题时仅仅依靠日志和分析代码逻辑往往不够用,这时需要借助系统调用工具来帮助排查。

strace 是什么?
在 Linux 世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等)时,必须由用户态模式切换至内核态模式,通过系统调用接口访问硬件设备。strace 可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

接下来,跟踪几个进程的调用情况,用 top 查看占用 CPU 高的进程,拿到 PID。
小技巧:输入 top,按 1 查看全部 CPU 的使用情况,shift + p 根据 CPU 排序。

阅读全文 »

Chrome 扩展开发简要指南

发表于 2017-09-13
扩展是什么?扩展是能够修改和增强浏览器功能的小程序,它由 HTML、JavaScript 和 CSS 等文件组成,最终被打包成以 .crx 为后缀的压缩文件,发布到 Chrome Web 应用商店。 扩展由以下文件组成: manifest 文件 HTML 文件 JavaScript 文件(可选) ...
阅读全文 »
12…5
leamtrop

leamtrop

50 日志
1 分类
52 标签
RSS
Creative Commons
© 2015 - 2019 leamtrop