如风 https://desperadoj.com Wed, 28 Oct 2020 11:25:47 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.5 UnblockNeteaseMusic 使用方法 https://desperadoj.com/17.html https://desperadoj.com/17.html#comments Tue, 10 Sep 2019 10:43:50 +0000 https://desperadoj.com/?p=1253 简介

UnblockNeteaseMusic 是一个解锁网易云音乐已下架歌曲的开源项目。

使用方法

下文的使用方法均基于 CentOS 7。

基本用法

安装 Node.js 和 PM2

curl -sL https://rpm.nodesource.com/setup_lts.x | bash -
yum install nodejs -y
npm install pm2 -g

下载 UnblockNeteaseMusic

git clone https://github.com/nondanee/UnblockNeteaseMusic.git && cd UnblockNeteaseMusic

UnblockNeteaseMusic 的配置参数如下:

$ unblockneteasemusic -h
usage: unblockneteasemusic [-v] [-p port] [-a address] [-u url] [-f host] [-o source [source ...]]
                           [-t token] [-e url] [-s] [-h]

optional arguments:
  -v,                      --version                          output the version number
  -p port,                 --port port                        specify server port
  -a address,              --address address                  specify server host
  -u url,                  --proxy-url url                    request through upstream proxy
  -f host,                 --force-host host                  force the netease server ip
  -o source [source ...],  --match-order source [source ...]  set priority of sources
  -t token,                --token token                      set up proxy authentication
  -e url,                  --endpoint url                     replace virtual endpoint with public host
  -s,                      --strict                           enable proxy limitation
  -h,                      --help                             output usage information

运行 UnblockNeteaseMusic

# iOS
pm2 start app.js --name="https_endpoit" -- -s -p port1:port2 -o kuwo qq migu -e https://music.163.com
# 非iOS
pm2 start app.js --name="http_endpoit" -- -s -p port1:port2 -o kuwo qq migu
# 保存进程
pm2 save
# 设置开机启动
pm2 startup

说明:

  1. 端口 -p port1:port2 和音源 -o kuwo qq migu 请根据自己需求修改。
  2. 由于新版 iOS 网易云音乐客户端强制检测音源是否为 HTTPS 路径,所以要对 iOS 与 非 iOS 分开进行配置。
  3. 由于 JOOX 音源默认为 HTTPS 路径,若服务器可使用 JOOX 音源,将 JOOX 设为默认音源可以同时适用所有客户端:
    pm2 start app.js --name="general" -- -s -p port1:port2 -o joox
  4. 若部署在公网服务器上,强烈推荐使用 -s 参数开启严格模式,限制代理范围为仅网易云音乐解锁所需域名和 IP,防止被滥用盗用。
  5. 端口部分 -p port1:port2 的写法参考 这里
  6. 目前已知的使用 PAC 模式的 BUG 为:手机微博客户端无法刷出内容,原因不明。(已修复)

在系统代理填入 http://server:port1/proxy.pac

  • macOS / iOS / iPadOS 需下载安装并信任 证书
  • Linux 启动客户端需增加 启动参数 --ignore-certificate-errors
  • Windows 需将网易云音乐客户端设置为「使用 IE 代理设置」

音源选择

目前所有可选用的音源如下表

参数音源音质描述
baidu百度音乐128kbps曲库很少,不推荐使用
jooxJOOX 音乐320kbps腾讯国际产品,曲库一般,仅限 香港,澳门,泰国,印尼,马来西亚,缅甸,南非 IP
kugou酷狗音乐128kbps曲库很少,不推荐使用
kuwo酷我音乐320kbps曲库全,对 IP 无限制
migu咪咕音乐320kbps曲库一般,仅限大陆 IP
qqQQ 音乐128kbps曲库一般,仅限大陆 IP
xiami虾米音乐/搜索接口被拦截要求移动滑块验证,目前不可用

匹配准确度

经测试,kuwo>qq>migu≈joox

推荐参数

大陆 IP:-o kuwo qq migu

非大陆 IP:-o kuwo joox

转发为 Shadowsocks

glider 是一个支持多种协议的代理转发软件。UnblockNeteaseMusic 只能提供 HTTP 代理,由于使用严格模式,需将代理进行分流,使用 glider 将 HTTP 转发为 Shadowsocks 协议后,适用的客户端也更加丰富。

服务端部署 glider

下载 glider

wget https://github.com/nadoo/glider/releases/download/v0.10.4/glider_0.10.4_linux_amd64.tar.gz

解压

tar zxvf glider_0.10.4_linux_amd64.tar.gz && cd glider_0.10.4_linux_amd64

复制二进制文件

cp glider /usr/bin/ && chmod +x /usr/bin/glider

创建配置文件,以适用于 iOS / iPadOS 为例

mkdir /etc/glider/ && vim /etc/glider/https-ss.conf

写入以下内容并保存,需自行修改加密方式 method,密码 password,Shadowsocks 监听的端口 port 及 UnblockNeteaseMusic 监听的端口 port1

# 开启调试模式,输出log
verbose=True

# Shadowsocks:
# Method:
#   AEAD Ciphers:
#     AEAD_AES_128_GCM AEAD_AES_192_GCM AEAD_AES_256_GCM AEAD_CHACHA20_POLY1305 AEAD_XCHACHA20_POLY1305
#   Stream Ciphers:
#     AES-128-CFB AES-128-CTR AES-192-CFB AES-192-CTR AES-256-CFB AES-256-CTR CHACHA20-IETF XCHACHA20 CHACHA20 RC4-MD5
#   Alias:
#     chacha20-ietf-poly1305 = AEAD_CHACHA20_POLY1305, xchacha20-ietf-poly1305 = AEAD_XCHACHA20_POLY1305
listen=ss://method:password@:port

# 需转发的 UnblockNeteaseMusic HTTP 代理
forward=http://127.0.0.1:port1

通过 systemd 创建开机启动

vim /etc/systemd/system/glider-https-ss.service

写入以下内容并保存

[Unit]
Description=Glider UnblockNeteaseMusic Shadowsocks Service for iOS & iPadOS
After=network.target nss-lookup.target

[Service]
Type=simple
Restart=on-failure
LimitNOFILE=102400
CPUAccounting=yes
MemoryAccounting=yes

# NOTE: change to your glider path
ExecStart=/usr/bin/glider -config /etc/glider/https-ss.conf

# work with systemd v229 or later, so glider can listen on port below 1024 with none-root user
# CAP_NET_ADMIN: ipset
# CAP_NET_BIND_SERVICE: bind ports under 1024
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

启用 glider-https-ss.service

systemctl enable glider-https-ss.service

启动 glider-https-ss.service

systemctl start glider-https-ss.service

查看 glider-https-ss.service 状态

systemctl status glider-https-ss.service

客户端分流规则

以下规则均为 解锁网易云音乐+屏蔽客户端广告,其中服务器地址 server,端口 server,加密方式 cipher 及 密码 password 需自行修改。

Clash
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  nameserver:
    - 119.29.29.29
    - 223.5.5.5

proxies:
  - name: Unblock
    type: ss
    server: server
    port: port
    cipher: cipher
    password: password

proxy-groups:
  - name: Netease Music
    type: select
    proxies:
      - Unblock
      - DIRECT

rules:
  # Netease Music Advertising
  - DOMAIN,admusicpic.music.126.net,REJECT
  - DOMAIN,iadmat.nosdn.127.net,REJECT
  - DOMAIN,iadmusicmat.music.126.net,REJECT
  - DOMAIN,iadmusicmatvideo.music.126.net,REJECT

  # Netease Music
  - DOMAIN,api.iplay.163.com,Netease Music
  - DOMAIN,apm3.music.163.com,Netease Music
  - DOMAIN,apm.music.163.com,Netease Music
  - DOMAIN,interface3.music.163.com,Netease Music
  - DOMAIN,interface.music.163.com,Netease Music
  - DOMAIN,music.163.com,Netease Music
  - IP-CIDR,39.105.63.80/32,Netease Music,no-resolve
  - IP-CIDR,45.254.48.1/32,Netease Music,no-resolve
  - IP-CIDR,47.100.127.239/32,Netease Music,no-resolve
  - IP-CIDR,59.111.160.195/32,Netease Music,no-resolve
  - IP-CIDR,59.111.160.197/32,Netease Music,no-resolve
  - IP-CIDR,59.111.181.35/32,Netease Music,no-resolve
  - IP-CIDR,59.111.181.38/32,Netease Music,no-resolve
  - IP-CIDR,59.111.181.60/32,Netease Music,no-resolve
  - IP-CIDR,101.71.154.241/32,Netease Music,no-resolve
  - IP-CIDR,103.126.92.132/32,Netease Music,no-resolve
  - IP-CIDR,103.126.92.133/32,Netease Music,no-resolve
  - IP-CIDR,112.13.119.17/32,Netease Music,no-resolve
  - IP-CIDR,112.13.122.1/32,Netease Music,no-resolve
  - IP-CIDR,115.236.118.33/32,Netease Music,no-resolve
  - IP-CIDR,115.236.121.1/32,Netease Music,no-resolve
  - IP-CIDR,118.24.63.156/32,Netease Music,no-resolve
  - IP-CIDR,193.112.159.225/32,Netease Music,no-resolve
  - IP-CIDR,223.252.199.66/32,Netease Music,no-resolve
  - IP-CIDR,223.252.199.67/32,Netease Music,no-resolve

  # Final
  - MATCH,DIRECT
Surfboard
[General]
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
dns-server = 119.29.29.29, 223.5.5.5, 1.2.4.8, system

[Proxy]
Unblock = ss, server, port, cipher, password, udp-relay=false

[Proxy Group]
Netease Music = select, Unblock, DIRECT

[Rule]
# Netease Music Advertising
DOMAIN,admusicpic.music.126.net,REJECT
DOMAIN,iadmat.nosdn.127.net,REJECT
DOMAIN,iadmusicmat.music.126.net,REJECT
DOMAIN,iadmusicmatvideo.music.126.net,REJECT

# Netease Music
DOMAIN,api.iplay.163.com,Netease Music
DOMAIN,apm3.music.163.com,Netease Music
DOMAIN,apm.music.163.com,Netease Music
DOMAIN,interface3.music.163.com,Netease Music
DOMAIN,interface.music.163.com,Netease Music
DOMAIN,music.163.com,Netease Music
IP-CIDR,39.105.63.80/32,Netease Music
IP-CIDR,45.254.48.1/32,Netease Music
IP-CIDR,47.100.127.239/32,Netease Music
IP-CIDR,59.111.160.195/32,Netease Music
IP-CIDR,59.111.160.197/32,Netease Music
IP-CIDR,59.111.181.35/32,Netease Music
IP-CIDR,59.111.181.38/32,Netease Music
IP-CIDR,59.111.181.60/32,Netease Music
IP-CIDR,101.71.154.241/32,Netease Music
IP-CIDR,103.126.92.132/32,Netease Music
IP-CIDR,103.126.92.133/32,Netease Music
IP-CIDR,112.13.119.17/32,Netease Music
IP-CIDR,112.13.122.1/32,Netease Music
IP-CIDR,115.236.118.33/32,Netease Music
IP-CIDR,115.236.121.1/32,Netease Music
IP-CIDR,118.24.63.156/32,Netease Music
IP-CIDR,193.112.159.225/32,Netease Music
IP-CIDR,223.252.199.66/32,Netease Music
IP-CIDR,223.252.199.67/32,Netease Music

# Final
FINAL,DIRECT
Quantumult
[SERVER]
Netease Music = shadowsocks, server, port, cipher, "password", upstream-proxy=false, upstream-proxy-auth=false

[SOURCE]

[BACKUP-SERVER]

[SUSPEND-SSID]

[POLICY]

[DNS]
119.29.29.29, 223.5.5.5, 1.2.4.8, system

[REWRITE]

[URL-REJECTION]

[TCP]
# Netease Music Advertising
HOST,admusicpic.music.126.net,REJECT
HOST,iadmat.nosdn.127.net,REJECT
HOST,iadmusicmat.music.126.net,REJECT
HOST,iadmusicmatvideo.music.126.net,REJECT

# Netease Music
HOST,api.iplay.163.com,Netease Music
HOST,apm3.music.163.com,Netease Music
HOST,apm.music.163.com,Netease Music
HOST,interface3.music.163.com,Netease Music
HOST,interface.music.163.com,Netease Music
HOST,music.163.com,Netease Music
IP-CIDR,39.105.63.80/32,Netease Music
IP-CIDR,45.254.48.1/32,Netease Music
IP-CIDR,47.100.127.239/32,Netease Music
IP-CIDR,59.111.160.195/32,Netease Music
IP-CIDR,59.111.160.197/32,Netease Music
IP-CIDR,59.111.181.35/32,Netease Music
IP-CIDR,59.111.181.38/32,Netease Music
IP-CIDR,59.111.181.60/32,Netease Music
IP-CIDR,101.71.154.241/32,Netease Music
IP-CIDR,103.126.92.132/32,Netease Music
IP-CIDR,103.126.92.133/32,Netease Music
IP-CIDR,112.13.119.17/32,Netease Music
IP-CIDR,112.13.122.1/32,Netease Music
IP-CIDR,115.236.118.33/32,Netease Music
IP-CIDR,115.236.121.1/32,Netease Music
IP-CIDR,118.24.63.156/32,Netease Music
IP-CIDR,193.112.159.225/32,Netease Music
IP-CIDR,223.252.199.66/32,Netease Music
IP-CIDR,223.252.199.67/32,Netease Music

# Final
FINAL,DIRECT

[GLOBAL]

[HOST]

[STATE]
STATE,AUTO

[MITM]
Shadowrocket
[General]
bypass-system = true
skip-proxy = 192.168.0.0/16, 193.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 127.0.0.1, 17.0.0.0/8, localhost, *.local
bypass-tun = 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.88.99.0/24, 192.168.0.0/16, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32
dns-server = 119.29.29.29, 223.5.5.5, 1.2.4.8, system

[Rule]
# Netease Music Advertising
DOMAIN,admusicpic.music.126.net,REJECT
DOMAIN,iadmat.nosdn.127.net,REJECT
DOMAIN,iadmusicmat.music.126.net,REJECT
DOMAIN,iadmusicmatvideo.music.126.net,REJECT

# Netease Music
DOMAIN,api.iplay.163.com,Netease Music
DOMAIN,apm3.music.163.com,Netease Music
DOMAIN,apm.music.163.com,Netease Music
DOMAIN,interface3.music.163.com,Netease Music
DOMAIN,interface.music.163.com,Netease Music
DOMAIN,music.163.com,Netease Music
IP-CIDR,39.105.63.80/32,Netease Music
IP-CIDR,45.254.48.1/32,Netease Music
IP-CIDR,47.100.127.239/32,Netease Music
IP-CIDR,59.111.160.195/32,Netease Music
IP-CIDR,59.111.160.197/32,Netease Music
IP-CIDR,59.111.181.35/32,Netease Music
IP-CIDR,59.111.181.38/32,Netease Music
IP-CIDR,59.111.181.60/32,Netease Music
IP-CIDR,101.71.154.241/32,Netease Music
IP-CIDR,103.126.92.132/32,Netease Music
IP-CIDR,103.126.92.133/32,Netease Music
IP-CIDR,112.13.119.17/32,Netease Music
IP-CIDR,112.13.122.1/32,Netease Music
IP-CIDR,115.236.118.33/32,Netease Music
IP-CIDR,115.236.121.1/32,Netease Music
IP-CIDR,118.24.63.156/32,Netease Music
IP-CIDR,193.112.159.225/32,Netease Music
IP-CIDR,223.252.199.66/32,Netease Music
IP-CIDR,223.252.199.67/32,Netease Music

# Final
FINAL,DIRECT
]]>
https://desperadoj.com/17.html/feed 54
自建网易云音乐解锁代理分享 https://desperadoj.com/16.html https://desperadoj.com/16.html#comments Mon, 02 Sep 2019 12:47:38 +0000 https://desperadoj.com/?p=1184 近日有网友告知我,我博客中免费提供的网易云音乐解锁代理,正在被人发布到闲鱼以“网易云vip破解”、“网易云音乐永久黑胶会员”等标题公开售卖,并提供给我数张可以确定的截图证据。

仅以交易完成后互评成功的评价数来计算,该卖家就已经通过售卖我的解锁代理牟利近 700 元,更别说那些数量更多的、未做出评价的交易,和同样拿我的免费代理售卖牟利的其他人(我相信绝不止他一人)。

这种二次售卖的“无本套利”行为,严重违背了我将代理免费共享的初衷,也在无形之中增加了我自身的风险(参考 Pandownload)。在经过审慎思考后,我决定无限期停止网易云音乐解锁的 HTTP 代理,因为这种方式对于二次售卖来说确实太过于简单方便。Shadowsocks 代理将会继续免费提供,但是将不定期更换密码,并且我会在所提供的远程托管配置中加入一些关于代理属于免费共享的说明,这不会影响正常使用,但是可以给被蒙骗后付款的人一些提醒。

—— 2020.5.2 01:11


网易云音乐解锁服务器搭建至今已经超过半年,由于使用人数越来越多,服务器的负载与流量也日渐增加。如果这个项目为你带来了便利,欢迎点击文章底部的打赏按钮,扫描二维码对解锁服务器进行捐赠。

简介

通过配置下文代理,可以解锁网易云音乐下架变灰歌曲。使用到的项目为 UnblockNeteaseMusicglider

使用方法

使用前说明:服务端已做限制,仅允许网易云音乐相关域名与 IP 通过代理,其余非法代理请求一律丢弃。

HTTP(已废弃)

系统代理 PAC

使用系统代理 PAC 解锁是最简单的方法,缺点是 Android 和 iOS 只能在连接无线网络的环境下使用,手机微博有无法刷新的未知 Bug(已修复)。

Windows

以 Windows 10 为例,进入「Windows 设置」>「网络和 Internet」>「代理」>「自动设置代理」>「使用设置脚本」,填写以下地址:

http://music.desperadoj.com:30000/proxy.pac(已废弃)

进入网易云音乐「设置」>「工具」>「Http代理」,选择「使用 IE 代理设置」。

macOS

进入「系统偏好设置」>「网络」>「高级」>「代理」,填写以下地址:

http://music.desperadoj.com:30000/proxy.pac(已废弃)

Android

进入「设置」>「WLAN」>「修改网络」>「高级选项」>「代理」>「代理自动配置」,填写以下地址:

http://music.desperadoj.com:30000/proxy.pac(已废弃)

iOS

首先下载 证书,进入「设置」>「通用」>「描述文件」,安装「UnblockNeteaseMusic Root CA」,并在「设置」>「通用」>「关于本机」>「证书信任设置」开启对「UnblockNeteaseMusic Root CA」的信任。

其次在「设置」>「无线局域网」>「当前连接网络」>「HTTP 代理」>「配置代理」>「自动」,填写以下地址:

http://music.desperadoj.com:30002/proxy.pac(已废弃)

代理软件

HTTP 代理客户端使用方法略,请阅读下文 Shadowsocks 客户端使用教程。

Shadowsocks

Shadowsocks 客户端数量十分丰富,在通过 glider 将 UnblockNeteaseMusic 的 HTTP 代理转发为 Shadowsocks 协议后,UnblockNeteaseMusic 的可用性更高,Android 和 iOS 在数据流量下也可以使用。

适用类型 服务器 端口 加密 密码
Windows, macOS, Android, Linux music.desperadoj.com 30001 aes-128-gcm desperadoj.com_free_proxy_emx2
iOS, iPadOS music.desperadoj.com 30003 aes-128-gcm desperadoj.com_free_proxy_emx2

Windows

Clash for Windows

下载安装 Clash for Windows

>> 点击导入节点与配置

在 Clash for Windows 的「General」界面开启「System Proxy」;进入网易云音乐「设置」>「工具」>「Http代理」,选择「使用 IE 代理设置」。

macOS

首先下载安装 证书,并将证书设置为信任。

ClashX Pro

下载安装 ClashX Pro

>> 点击导入节点与配置

Android

Clash for Android

下载安装 Clash for Android

>> 点击导入节点与配置

Surfboard

下载安装 Surfboard

>> 点击导入节点与配置

iOS

请使用 Safari 浏览器访问网站。首先下载 证书,进入「设置」>「通用」>「描述文件」,安装「UnblockNeteaseMusic Root CA」,并在「设置」>「通用」>「关于本机」>「证书信任设置」开启对「UnblockNeteaseMusic Root CA」的信任。

Shadowrocket

使用非大陆地区 Apple ID 登录 App Store 购买 Shadworocket

>> 点击导入节点

>> 点击导入配置

Quantumult

使用非大陆地区 Apple ID 登录 App Store 购买 Quantumult

>> 点击导入节点与配置

Quantumult X

使用非大陆地区 Apple ID 登录 App Store 购买 Quantumult X

>> 点击导入节点与配置

Surge

使用非大陆地区 Apple ID 登录 App Store 购买 Surge

>> 点击导入节点与配置

]]>
https://desperadoj.com/16.html/feed 361
「转载」简单介绍一下网络连接的封锁与反封锁 https://desperadoj.com/15.html https://desperadoj.com/15.html#respond Fri, 21 Dec 2018 05:52:32 +0000 https://desperadoj.com/?p=1180 原文:https://steemit.com/cn/@v2ray/6knmmb


最近一段时间,针对网络连接的战争愈演愈烈,双方都在尝试不同的策略。以至于对于新人来说,很难理解哪些已经发生过,哪些还在尝试中。于是我打算写篇文章来简单介绍一下整个故事的来龙去脉。

史前时代

最早的封锁大约是 DNS 投毒和 IP 黑名单。具体细节这里不表,简单来说就是 1) 对于特定域名比如 google.com,你的浏览器解析不到正确的 IP 地址; 2) 即使碰巧解析到了正确的 IP 地址,由于 Google 在亚洲地区的 IP 地址就那么几个,发往这几个 IP 地址的数据包被全部丢弃(或 TCP Reset),也就导致了用户死活访问不到 google.com。

攻防战 1.0

由于被封的 IP 依然是少数,而 Google 在全球的 IP 数量庞大,于是网友们很快想到了解决方案,就是使用 hosts 文件指定 IP 地址。虽然亚洲地区的 IP 被封了,但美国、欧洲甚至是南美洲依然有可以访问的地址,速度慢是慢了点,但总比上不去的好。于是 hosts 文件这个方案流行了那么一段时间。

后来封锁升级了,不是针对 IP 地址的了,而是针对每一个网络连接。受限于为数不多的几个出入境节点,网民的每一个出境网络连接实际上都被扫描过一遍。于是网络协议最初设计时,并未考虑封锁这回事,无论是 HTTP 还是 HTTPS,只需要扫描每个连接的前几十个字节,就可以得到其目标地址(域名)。HTTP 是通过其 Host 头,而 HTTPS 是通过 SNI

至此,针对域名,没有封不掉的,只有不想封的。

在直线连接几乎不可能的之后,那就只能绕路了,也就是代理。代理的主要三种模式是 Socks、HTTP 和 VPN。三种模式各有利弊:

  • Socks 可以代理 TCP 和 UDP 连接,但其数据包是明文的,依然逃不过上述检测
  • HTTP 可以有 TLS 加持,但只能代理 TCP 连接,对 UDP 无效
  • VPN 可以代理包含 TCP / UDP 在内的各种连接,但 VPN 会转发几乎所有的数据,在可以访问 Google 的同时,可能就不能访问优酷了(地区限制)

然后 Shadowsocks 横空出世。

Shadowsocks 本质上是 Socks 的加密版本,可选择多种加密方式。一旦加了密,其传输的数据就无法被第三方检测了。并且 Shadowsocks 在转发数据之前,可以对其目的地进行判断,比如可以只转发去往 Google 的流量,而优酷的流量依然直连。在经常一段时间的优化之后,Shadowsocks 可以达到一个全局较快的连接速度,比上述的几个代理方式都要好。

由于 Shadowsocks 太过火爆,其作者被公安机关约谈,勒令不得继续参于相关项目的开发。

攻防战 2.0

中国那么多人,要把相关人员一一找出来喝茶,也不是一件容易的事。封锁这事,还得从网络连接着手。

对于一台国内的机器往一个国外的服务器发送数据的网络连接,有两种检测方式,被动式和主动式。

被动式是指检测方只观察连接中传输的内容,当内容符合某种模式(比如关键字)的时候,就把连接中断,或者服务器 IP 列入黑名单。上述的所有封锁方式均为被动式。

而主动式指的是,当观察到一个不可识别的连接时,检测方主动发起一个去往服务器的连接,通过一些编造的数据,探测出服务器是不是一台代理服务器。

Shadowsocks 协议曾被指出一个严重的安全性问题。只需要不到 16 次主动探测,就可以 100% 断定服务器是否在运行 Shadowsocks。具体来说,初版 Shadowsocks 协议依赖于连接头部的某一个字节来读取目标地址,这个字节的取值只有三种。当这个字节的取值不合法时,Shadowsocks 会快速中断连接,否则继续读取剩下的内容。于是这一特征可被用于探测一个服务器是否为 Shadowsocks 代理。

为了应对这一探测方式,Shadowsocks 对其加密方式升级了两次(OTA 和 AEAD)。目前看来这一漏洞,以及其它可能的主动探测方式,都被避免了。

同时期还有多个流行的翻墙工具,其原理和 Shadowsocks 大同小异,这里略过。

番外篇 1.0

既然代理工具有漏洞,那么检测工具也一会有漏洞。只要发现并利用这些漏洞,一样可以突破封锁。

曾经有一个项目“西厢计划”,就是利用了检测工具的漏洞,伪造了一些数据包,使它在检测方看上去上一个网络连接,但在目的服务器看来又是另一回事。检测方以为自己已经封锁了该连接,但实际上并没有。

和 Shadowsocks 的升级一样,检测方的算法也一样可以升级。升级之后,西厢计划便失效了。

攻防战 3.0

从信息学的角度来说,Shadowsocks 协议是一个近乎完美的协议。它的数据完全随机,无法 100% 确定这个网络连接是否为 Shadowsocks。但从另一方面来说,网络数据并不是均匀分布的,保守来说,HTTP 和 HTTPS 流量占据了 70% 以上。而如果一个服务器接收的流量 90% 是杂乱无章的,那么它就很可疑了。虽然检测方不能严格证明那就是 Shadowsocks,但秀才遇到兵啊……

既然随机数据可疑,那我们就把数据伪装成 HTTP 或者 HTTPS 好了。由于 HTTPS 是大势所趋,并且 HTTPS 传输的内容天生不可能被破解,把代理数据伪装成 HTTPS 也是一个比较合理的选择。

由于检测方无法判断一个 HTTPS 连接是正常的网站流量,还是代理。如果封锁所有的 HTTPS 流量,那无疑是一个杀敌五百,自损一千的昏招。当然急病乱投医也是有可能的……

第二战场 1.0

所有的代理工具都不是系统自带的,用户使用代理工具之前,需要先下载和安装。于是封锁下载途径也是一种封锁。Apple 就按要求移除了所有 VPN 应用。此战场防御方完败。

目前明面上的攻防到此为止,接下来说说一些想法和揣测。

攻防战 4.0

虽然流量经过了加密,但加密的只是内容,不能排除还有其它的特征。比如 TLS(HTTPS 所用的加密协议)的握手环节,客户端和服务器互相发送的数据是有规律的。比如握手三次,每一次的数据量大致是固定的。如果有一个连接,也有三次握手,每一次的数据量和 TLS 相当,但是内容是混乱的,那么这个连接是不是 Shadowsocks 连接呢?当然 Shadowsocks 有一些额外的数据,这个另说。

目前翻墙圈在这一问题上有很大的争论。对于检测方是否足够强的技术做类似的检测,以及是否有足够的把握只封代理都存在疑惑。但毫无疑问,这将是下一个值得研究的领域。

另一个热点是分布式或者P2P。

这一领域已经被 Tor 证明为成功或者失败了(取决于你怎么看待 Tor)。我个人不喜欢 Tor 因为它速度太慢。虽然 P2P 这一术语最近很热,听上去也很有希望,但实际上它并不适用于翻墙。翻墙的过程需要「墙内的P」2「墙外的P」,并不是任意两个 P 都可以自由组合的。

目前对翻墙 P2P 的研究和应用都比较少,前景不明朗,观望中。

以上是对翻墙历史的简单总结,希望对新人有帮助。

]]>
https://desperadoj.com/15.html/feed 0
HostKVM 香港国际月付 68 元 VPS 测评 https://desperadoj.com/14.html https://desperadoj.com/14.html#respond Sun, 09 Dec 2018 16:34:30 +0000 https://desperadoj.com/?p=1011 简介

HostKVM 是一家由国人创办的 VPS 主机服务商,全线产品采用 KVM 架构,主打 香港 / 新加坡 / 日本 / 美国 4 条线路,流量双向计算,支持支付宝付款。HostKVM 在 11 月新上线香港湾仔(国际)数据中心业务,即香港国际套餐,月付 62 元起,三网经 PCCW 直连大陆。目前官方有购机优惠,输入折扣码 2018 享受循环 8 折优惠。

香港湾仔数据中心测试地址:点击此处

  • IPv4 测试地址:193.187.119.119

测试

本次测试基于月付 68 元 HKGL-2G 套餐,其基础配置如下:

CPU 2 核
内存 2048 MB
硬盘 30 GB Raid 10
流量 500 GB / 月
带宽 80 Mbps 共享
IPv4 1 个
IPv6 0 个
特点 Netflix

测试环境:

  • OS: CentOS 7.6
  • TCP congestion control: Cubic

基础性能测试

去程 Ping 检测

线路 节点数目 最快节点 最慢节点 平均响应
全部 77 广东广州BGP(互联港湾) 7.8 毫秒 北京(华为云) 294.9 毫秒 62.6 毫秒
联通线路 8 广东茂名(联通) 17.9 毫秒 吉林延边联通 63.5 毫秒 38.0 毫秒
电信线路 38 广东广州电信(天翼云四区) 8.6 毫秒 陕西宝鸡电信 158.0 毫秒 61.6 毫秒
移动线路 5 广州(移动) 11.4 毫秒 江苏常州(移动) 87.4 毫秒 51.2 毫秒
铁通线路 2 辽宁沈阳铁通 66.5 毫秒 吉林长春铁通 129.9 毫秒 98.1 毫秒
东北地区 5 辽宁大连电信(UFOCLOUD飞碟云) 54.9 毫秒 吉林长春铁通 129.9 毫秒 75.2 毫秒
华北地区 9 北京(青云QingCloud三区A) 38.7 毫秒 北京(华为云) 294.9 毫秒 88.9 毫秒
西北地区 4 陕西西安电信(天翼云一区) 46.4 毫秒 陕西宝鸡电信 158.0 毫秒 95.9 毫秒
西南地区 11 重庆联通 31.8 毫秒 重庆(腾讯云) 121.0 毫秒 56.8 毫秒
华中地区 6 武汉电信(杭州牛盾) 26.0 毫秒 河南郑州(明源网络) 130.9 毫秒 67.3 毫秒
华东地区 30 浙江杭州联通 29.5 毫秒 福建厦门(天翼云厦门二区/BGP线路) 156.1 毫秒 66.6 毫秒
华南地区 12 广东广州BGP(互联港湾) 7.8 毫秒 广东深圳(阿里云) 51.9 毫秒 19.3 毫秒

回程路由追踪

上海电信上海联通上海移动广东电信广东联通广东移动
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 8.41 ms
3 10.249.250.17 局域网 * 9.84 ms
4 10.0.17.154 局域网 * 17.00 ms
5 10.0.21.137 局域网 * 0.94 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 49.48 ms
7 * * * *
8 202.97.122.118 中国 香港 电信 AS4134 29.50 ms
9 202.97.122.117 中国 香港 电信 AS4134 36.38 ms
10 202.97.6.5 中国 上海 电信 AS4134 28.04 ms
11 202.97.33.125 中国 上海 电信 AS4134 29.28 ms
12 202.97.61.5 中国 上海 电信 AS4134 72.23 ms
13 101.95.120.73 中国 上海 电信 AS4812 73.49 ms
14 101.95.89.42 中国 上海 电信 AS4812 91.69 ms
15 61.152.81.138 中国 上海 电信 AS4812 86.49 ms
16 101.95.117.198 中国 上海 电信 AS4812 79.62 ms
17 ns.fudan.sh.cn (61.129.42.6) 中国 上海 电信 AS4812 83.55 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 3.33 ms
3 10.249.250.17 局域网 * 1.10 ms
4 10.0.17.154 局域网 * 1.91 ms
5 10.0.21.137 局域网 * 0.72 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 1.24 ms
7 63-217-17-129.static.pccwglobal.net (63.217.17.129) 中国 香港 pccw.com AS3491 1.61 ms
8 219.158.38.66 中国 香港 联通 AS4837 1.69 ms
9 219.158.38.65 中国 香港 联通 AS4837 31.27 ms
10 219.158.102.209 中国 广东 广州 联通 AS4837 215.27 ms
11 219.158.103.37 中国 广东 广州 联通 AS4837 49.01 ms
12 219.158.8.117 中国 广东 广州 联通 AS4837 12.74 ms
13 219.158.6.213 中国 上海 联通 AS4837 46.39 ms
14 * * * *
15 139.226.214.34 中国 上海 联通 AS17621 40.89 ms
16 112.64.249.154 中国 上海 联通 AS17621 37.87 ms
17 210.22.80.1 中国 上海 联通 AS17621 41.24 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 0.92 ms
3 10.249.250.17 局域网 * 1.57 ms
4 10.0.17.154 局域网 * 51.90 ms
5 10.0.21.137 局域网 * 25.42 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 13.49 ms
7 te0-3-0-0.br03.hkg08.pccwbtn.net (63.217.66.153) 中国 香港 pccw.com AS3491 20.11 ms
8 TenGE0-1-0-8.br02.hkg08.pccwbtn.net (63.223.29.81) 中国 香港 pccw.com AS3491 1.55 ms
9 63.218.205.154 中国 香港 pccw.com AS3491 1.75 ms
10 ae-1.a01.chwahk02.hk.bb.gin.ntt.net (129.250.5.161) 中国 香港 ntt.com AS2914 3.29 ms
11 * * * *
12 * * * *
13 223.120.2.14 中国 广东 广州 移动 AS58453 8.34 ms
14 221.183.55.62 中国 移动 AS9808 24.86 ms
15 221.176.24.133 中国 广东 广州 移动 AS9808 9.55 ms
16 221.176.18.113 中国 广东 广州 移动 AS9808 23.88 ms
17 221.176.22.25 中国 上海 移动 AS9808 40.04 ms
18 221.183.12.170 中国 上海 移动 AS9808 43.18 ms
19 117.185.10.234 中国 上海 移动 AS9808 42.37 ms
20 120.204.198.131 中国 上海 移动 AS9808 42.76 ms
21 120.204.198.146 中国 上海 移动 AS9808 38.68 ms
22 * * * *
23 120.204.198.210 中国 上海 移动 AS9808 42.46 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 3.53 ms
3 10.249.250.17 局域网 * 9.39 ms
4 10.0.17.154 局域网 * 25.05 ms
5 10.0.21.137 局域网 * 0.95 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 26.32 ms
7 63-216-142-105.static.pccwglobal.net (63.216.142.105) 中国 香港 pccw.com AS3491 26.52 ms
8 ct.pos0-4-1-1.br04.hkg05.pccwbtn.net (63.218.215.198) 中国 香港 pccw.com AS3491 29.34 ms
9 202.97.61.78 中国 上海 电信 AS4134 29.88 ms
10 202.97.35.85 中国 上海 电信 AS4134 29.56 ms
11 202.97.24.229 中国 上海 电信 AS4134 30.42 ms
12 202.97.82.150 中国 广东 广州 电信 AS4134 36.28 ms
13 183.56.30.78 中国 广东 广州 电信 AS4134 31.55 ms
14 * * * *
15 113.98.103.126 中国 广东 广州 电信 AS4134 49.73 ms
16 183.63.68.234 中国 广东 广州 电信 AS4134 33.07 ms
17 * * * *
18 210.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.210) 中国 广东 广州 电信 AS4134 32.48 ms
19 * * * *
20 * * * *
21 61.140.99.33 中国 广东 广州 电信 AS4134 30.80 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 0.92 ms
3 10.249.250.17 局域网 * 40.47 ms
4 10.0.17.154 局域网 * 4.11 ms
5 10.0.21.137 局域网 * 79.93 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 1.34 ms
7 63-217-17-129.static.pccwglobal.net (63.217.17.129) 中国 香港 pccw.com AS3491 94.44 ms
8 219.158.40.98 中国 香港 联通 AS4837 15.27 ms
9 219.158.40.97 中国 香港 联通 AS4837 24.11 ms
10 219.158.29.53 中国 广东 广州 联通 AS4837 10.69 ms
11 219.158.103.37 中国 广东 广州 联通 AS4837 11.97 ms
12 219.158.8.121 中国 广东 广州 联通 AS4837 7.68 ms
13 120.81.0.110 中国 广东 广州 联通 AS17816 11.15 ms
14 * * * *
15 cache2-gd.cnc-gd.net (221.5.88.88) 中国 广东 广州 联通 AS17816 8.51 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 局域网 * 2.08 ms
3 10.249.250.17 局域网 * 2.30 ms
4 10.0.17.154 局域网 * 37.00 ms
5 10.0.21.137 局域网 * 9.60 ms
6 223-197-123-142.static.imsbiz.com (223.197.123.142) 中国 香港 pccw.com AS4515 19.58 ms
7 te0-3-0-0.br03.hkg08.pccwbtn.net (63.217.66.153) 中国 香港 pccw.com AS3491 4.86 ms
8 TenGE0-1-0-7.br02.hkg08.pccwbtn.net (63.223.29.77) 中国 香港 pccw.com AS3491 17.70 ms
9 63.218.205.154 中国 香港 pccw.com AS3491 6.35 ms
10 ae-3.r02.tkokhk01.hk.bb.gin.ntt.net (129.250.6.102) 中国 香港 ntt.com AS2914 2.13 ms
11 ce-0-4-0-0.r02.tkokhk01.hk.ce.gin.ntt.net (203.131.241.82) 中国 香港 ntt.com AS2914 3.98 ms
12 223.120.2.117 中国 香港 移动 AS58453 2.03 ms
13 223.120.2.82 中国 广东 广州 移动 AS58453 6.81 ms
14 221.183.55.90 中国 广东 广州 移动 AS9808 10.45 ms
15 221.176.24.57 中国 广东 广州 移动 AS9808 10.69 ms
16 221.176.22.233 中国 广东 广州 移动 AS9808 12.30 ms
17 * * * *
18 120.198.206.158 中国 广东 广州 移动 AS56040 12.67 ms
19 183.235.224.206 中国 广东 广州 移动 AS56040 13.28 ms
20 ns5.gd.cnmobile.net (211.136.192.6) 中国 广东 广州 移动 AS56040 13.22 ms

代理速度测试

网络环境:中国联通 100 Mbps

总结

HostKVM 本次新推出的香港国际线路十分良好,而在使用折扣码后月付 49.6 元起的售价也具有极高的性价比,非常适合建站等用途,不过代理用途是在 ToS 中被明文禁止使用的(至于偷偷使用会怎么样那就不好说了),购买前需知悉。

]]>
https://desperadoj.com/14.html/feed 0
阿里云 香港月付 34 元轻量应用服务器测评 https://desperadoj.com/13.html https://desperadoj.com/13.html#respond Thu, 06 Dec 2018 17:12:50 +0000 https://desperadoj.com/?p=958 简介

阿里云中国站 轻量应用服务器近期新增加了香港和新加坡两个节点,售价对比其他商家非常低廉,最低配置只需月付 24 元。其香港节点电信去程绕日本 NTT,回程 CN2 直连,联通移动全程直连。

香港节点 IPv4 测试地址:149.129.100.1

测试

本次测试基于 34 元 / 月套餐,其基础配置如下:

CPU 1 核
内存 2 GB
硬盘 50 GB SSD
流量 2 TB / 月
带宽 30 Mbps
IPv4 1 个
IPv6 0 个
特点 Netflix / 免费快照

测试环境:

  • OS: CentOS 7.5
  • TCP congestion control: BBR

基础性能测试

去程 Ping 检测

线路 节点数目 最快节点 最慢节点 平均响应
全部 79 广州(移动) 10.0 毫秒 江苏南京电信(天翼云) 385.6 毫秒 134.5 毫秒
联通线路 9 广西南宁联通 16.5 毫秒 河南郑州景安网络BGP 88.5 毫秒 41.1 毫秒
电信线路 39 北京电信(天翼云) 74.3 毫秒 江苏南京电信(天翼云) 385.6 毫秒 157.4 毫秒
移动线路 5 广州(移动) 10.0 毫秒 四川德阳移动 55.2 毫秒 36.3 毫秒
铁通线路 2 辽宁沈阳铁通 58.1 毫秒 吉林长春铁通 61.9 毫秒 60.0 毫秒
东北地区 5 辽宁沈阳铁通 58.1 毫秒 辽宁大连电信(UFOCLOUD飞碟云) 91.0 毫秒 71.8 毫秒
华北地区 9 北京(青云QingCloud三区A) 37.6 毫秒 北京鹏博士 314.5 毫秒 145.7 毫秒
西北地区 4 陕西西安电信(天翼云一区) 85.7 毫秒 陕西西安电信(天翼云二区) 176.7 毫秒 119.8 毫秒
西南地区 11 重庆联通 32.1 毫秒 重庆(腾讯云) 282.1 毫秒 156.4 毫秒
华中地区 6 河南郑州景安网络BGP 88.5 毫秒 湖南长沙(天翼云) 203.2 毫秒 133.7 毫秒
华东地区 32 安徽合肥移动 29.5 毫秒 江苏南京电信(天翼云) 385.6 毫秒 142.6 毫秒
华南地区 12 广州(移动) 10.0 毫秒 广州(腾讯云) 232.8 毫秒 115.7 毫秒

回程路由追踪

上海电信上海联通上海移动广东电信广东联通广东移动
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 8.57 ms
3 11.211.20.142 美国 defense.gov * 33.29 ms
4 103.52.74.250 中国 youku.com * 132.60 ms
5 203.100.48.253 中国 香港 电信 AS4809 66.31 ms
6 59.43.186.125 中国 香港 电信 * 93.06 ms
7 59.43.248.249 中国 广东 广州 电信 * 28.10 ms
8 59.43.244.142 中国 广东 广州 电信 * 59.05 ms
9 202.97.94.105 中国 广东 广州 电信 AS4134 74.76 ms
10 202.97.94.133 中国 广东 广州 电信 AS4134 101.71 ms
11 101.95.120.33 中国 上海 电信 AS4812 161.85 ms
12 101.95.89.50 中国 上海 电信 AS4812 166.73 ms
13 61.152.81.146 中国 上海 电信 AS4812 170.35 ms
14 101.95.117.198 中国 上海 电信 AS4812 176.57 ms
15 ns.fudan.sh.cn (61.129.42.6) 中国 上海 电信 AS4812 150.26 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 8.09 ms
3 11.211.20.150 美国 defense.gov * 63.76 ms
4 116.251.82.178 中国 香港 阿里云 AS45102 67.98 ms
5 202.77.19.37 中国 香港 联通 AS10099 117.16 ms
6 202.77.19.46 中国 香港 联通 AS10099 142.07 ms
7 202.77.23.29 中国 香港 联通 AS10099 107.57 ms
8 219.158.102.213 中国 广东 广州 联通 AS4837 63.00 ms
9 219.158.97.30 中国 广东 广州 联通 AS4837 64.64 ms
10 219.158.8.113 中国 广东 广州 联通 AS4837 64.81 ms
11 219.158.6.253 中国 上海 联通 AS4837 90.71 ms
12 * * * *
13 139.226.203.54 中国 上海 联通 AS17621 87.46 ms
14 112.64.249.154 中国 上海 联通 AS17621 85.09 ms
15 210.22.80.1 中国 上海 联通 AS17621 87.48 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 9.43 ms
3 11.211.20.118 美国 defense.gov * 108.56 ms
4 103.52.74.246 中国 youku.com * 81.86 ms
5 223.119.2.237 中国 香港 移动 AS58453 63.40 ms
6 223.120.2.10 中国 广东 广州 移动 AS58453 120.47 ms
7 221.183.55.62 中国 移动 AS9808 85.99 ms
8 221.176.24.229 中国 广东 广州 移动 AS9808 87.09 ms
9 221.176.18.113 中国 广东 广州 移动 AS9808 10.84 ms
10 * * * *
11 221.183.13.154 中国 上海 移动 AS9808 41.22 ms
12 117.185.10.122 中国 上海 移动 AS9808 37.33 ms
13 120.204.198.131 中国 上海 移动 AS9808 40.65 ms
14 120.204.198.146 中国 上海 移动 AS9808 35.97 ms
15 * * * *
16 * * * *
17 120.204.198.210 中国 上海 移动 AS9808 39.61 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 4.53 ms
3 11.211.20.114 美国 defense.gov * 42.65 ms
4 103.52.74.246 中国 youku.com * 94.57 ms
5 203.100.48.253 中国 香港 电信 AS4809 135.62 ms
6 59.43.186.121 中国 香港 电信 * 84.58 ms
7 59.43.250.77 中国 广东 广州 电信 * 156.20 ms
8 59.43.244.134 中国 广东 广州 电信 * 66.80 ms
9 202.97.94.93 中国 广东 广州 电信 AS4134 101.04 ms
10 202.97.94.129 中国 广东 广州 电信 AS4134 80.12 ms
11 * * * *
12 * * * *
13 * * * *
14 183.63.68.238 中国 广东 广州 电信 AS4134 93.28 ms
15 206.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.206) 中国 广东 广州 电信 AS4134 64.24 ms
16 * * * *
17 210.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.210) 中国 广东 广州 电信 AS4134 85.95 ms
18 * * * *
19 * * * *
20 61.140.99.33 中国 广东 广州 电信 AS4134 68.43 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 5.01 ms
3 11.211.16.106 美国 defense.gov * 38.98 ms
4 103.52.74.246 中国 youku.com * 27.93 ms
5 202.77.19.33 中国 香港 联通 AS10099 173.29 ms
6 202.77.18.194 中国 香港 联通 AS10099 193.72 ms
7 43.252.86.66 中国 香港 联通 AS10099 111.96 ms
8 202.77.23.29 中国 香港 联通 AS10099 61.09 ms
9 219.158.112.213 中国 广东 广州 联通 AS4837 57.59 ms
10 219.158.103.33 中国 广东 广州 联通 AS4837 63.57 ms
11 219.158.103.41 中国 广东 广州 联通 AS4837 61.56 ms
12 120.81.0.102 中国 广东 广州 联通 AS17816 60.33 ms
13 221.4.6.14 中国 广东 广州 联通 AS17816 64.44 ms
14 cache2-gd.cnc-gd.net (221.5.88.88) 中国 广东 广州 联通 AS17816 63.88 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 美国 defense.gov * 6.30 ms
3 11.211.16.106 美国 defense.gov * 22.93 ms
4 116.251.82.174 中国 香港 阿里云 AS45102 1.73 ms
5 223.119.2.241 中国 香港 移动 AS58453 145.72 ms
6 223.118.3.125 中国 香港 移动 AS58453 137.26 ms
7 223.120.2.6 中国 广东 广州 移动 AS58453 57.38 ms
8 221.183.55.58 中国 广东 广州 移动 AS9808 17.74 ms
9 221.183.25.118 中国 广东 广州 移动 AS9808 51.65 ms
10 221.176.24.5 中国 广东 广州 移动 AS9808 11.11 ms
11 * * * *
12 211.136.203.30 中国 广东 广州 移动 AS56040 9.84 ms
13 183.235.224.210 中国 广东 广州 移动 AS56040 10.25 ms
14 ns5.gd.cnmobile.net (211.136.192.6) 中国 广东 广州 移动 AS56040 11.71 ms

代理速度测试

网络环境:中国联通 100 Mbps

总结

阿里云本次新增的轻量应用服务器香港节点,电信虽然去程绕日本 NTT 但回程是 CN2 ,速度尚可;联通综合最佳;移动虽然整体延迟较低,但是回程似乎遭到 QOS,导致速度极慢。经移动网络实际测试,体验良好,速度并未受影响。电信联通用户可以考虑购买香港轻量应用服务器,移动用户最好考虑别家。三网用户均可以考虑阿里云香港轻量服务器。

另外值得注意的一点是,由于服务器购买自国内版阿里云,其 IP 所属 ASN 的地区为中国大陆,所以轻量应用服务器分配的 IP 会被谷歌识别为中国大陆地区,默认开启安全搜索模式且无法关闭(可以通过访问 https://www.google.com/ncr 解决),部分服务如 Google Voice / 环聊 等不可用,想用作代理请谨慎选择。

考虑到极其低廉的售价,香港轻量应用服务器非常值得购买,如果今后能进一步优化电信的去程路由,会是一款竞争力极强的产品。

]]>
https://desperadoj.com/13.html/feed 0
Linux Server 测评脚本 ZBench https://desperadoj.com/12.html https://desperadoj.com/12.html#respond Wed, 05 Dec 2018 15:23:15 +0000 https://desperadoj.com/?p=931 简介

不少人购买 Linux Server 之后都想先进行一些测试,经典的性能测试工具有 Unixbench,综合型测试脚本有 Bench.sh 或者 SuperBenchZBench 也是一个 Linux Server 综合测试脚本,会从 系统信息、硬盘 I/O、网络测试 三个方面对主机进行测试,并生成一份完整详细的测试报告(HTML)。

由于 ZBench 近期缺少维护,其功能已经无法完整使用,我 Fork 了一份脚本并做了适当修改:

  • 替换失效网络测试节点
  • 新增部分网络测试节点
  • 由于原脚本 API 接口失效,移除在线查看测试报告功能
  • 由于 ISP 信息获取不准确且与「路由」功能重叠,移除测试报告中路由追踪的「ISP」项
  • 少量 BUG 修复

使用方法

如果中文版出现乱码等情况,请换成英文版。

中文版:

wget https://raw.githubusercontent.com/DesperadoJ/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh

英文版:

wget https://raw.githubusercontent.com/DesperadoJ/ZBench/master/ZBench.sh && bash ZBench.sh

测试结果演示

测试报告演示

链接

点此查看

截图

]]>
https://desperadoj.com/12.html/feed 0
DMIT 香港月付 $14.9 VPS 测评 https://desperadoj.com/11.html https://desperadoj.com/11.html#respond Fri, 21 Sep 2018 15:53:54 +0000 https://desperadoj.com/?p=878 简介

DMIT 是一家新成立的美国 IDC 商家,目前只有香港主机在售,旗下 VPS 采用 KVM 虚拟架构,最低月付 $10(IPv6),流量双向计算,支持支付宝付款。其 Platinum VM(PVM.n2) 套餐三网均走 PCCW 直连;Platinum CVM(PVM.n3) 套餐电信通过 CN2,联通移动通过 PCCW 与中国大陆直连。

Platinum VM(PVM.n2) 节点测试地址:点击此处

  • IPv4 测试地址:193.110.200.233
  • IPv6 测试地址:2403:18c0:1:233::a46b
  • 测试文件:10MB 25MB 50MB 100MB 300MB

Platinum CVM(PVM.n3) 节点测试地址:点击此处

  • IPv4 测试地址:103.117.101.101
  • IPv6 测试地址:2403:18c0:1:52d::b8d7
  • 测试文件:10MB 25MB 50MB 100MB 300MB

测试

本次测试基于 DMIT 月付 $14.9 pvm.n2.mini 套餐,其基础配置如下:

CPU 1 核
内存 1 GB
硬盘 20 GB SSD
流量 1200 GB / 月
带宽 100 Mbps
IPv4 1 个
IPv6 1 个
特点 Netflix / TVB / DDoS 防护

测试环境:

  • OS: CentOS 7.5
  • TCP congestion control: BBR

基础性能测试

去程 Ping 检测

线路 节点数目 最快节点 最慢节点 平均响应
全部 77 广东佛山电信(30CN.NET) 8.6 毫秒 北京(华为云) 328.9 毫秒 60.6 毫秒
联通线路 8 广西南宁联通 16.7 毫秒 吉林延边联通 66.0 毫秒 41.1 毫秒
电信线路 38 广东佛山电信(30CN.NET) 8.6 毫秒 贵州贵阳(天翼云) 166.0 毫秒 58.6 毫秒
移动线路 5 广州(移动) 13.2 毫秒 江苏常州(移动) 99.0 毫秒 51.9 毫秒
铁通线路 2 辽宁沈阳铁通 75.5 毫秒 吉林长春铁通 146.0 毫秒 110.7 毫秒
东北地区 5 辽宁沈阳(天翼云) 54.8 毫秒 吉林长春铁通 146.0 毫秒 79.4 毫秒
华北地区 9 北京(青云QingCloud三区A) 40.5 毫秒 北京(华为云) 328.9 毫秒 83.9 毫秒
西北地区 4 陕西西安电信(天翼云一区) 49.3 毫秒 青海西宁电信 153.0 毫秒 100.9 毫秒
西南地区 11 四川乐山电信 35.4 毫秒 贵州贵阳(天翼云) 166.0 毫秒 60.3 毫秒
华中地区 6 湖北武汉(天翼云) 26.4 毫秒 河南洛阳(bgp) 134.7 毫秒 57.4 毫秒
华东地区 30 上海电信(天翼云一区) 31.4 毫秒 福建厦门(天翼云厦门二区/BGP线路) 182.5 毫秒 64.0 毫秒
华南地区 12 广东佛山电信(30CN.NET) 8.6 毫秒 广西南宁(电信) 25.0 毫秒 15.2 毫秒

回程路由追踪

上海电信上海联通上海移动广东电信广东联通广东移动
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 5.40 ms
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 30.00 ms
3 * * * *
4 * * * *
5 202.97.6.49 中国 上海 电信 AS4134 48.26 ms
6 202.97.35.137 中国 上海 电信 AS4134 115.53 ms
7 202.97.57.234 中国 上海 电信 AS4134 117.22 ms
8 101.95.120.233 中国 上海 电信 AS4812 104.39 ms
9 101.95.89.90 中国 上海 电信 AS4812 99.86 ms
10 101.95.40.62 中国 上海 电信 AS4812 94.53 ms
11 101.95.117.198 中国 上海 电信 AS4812 99.47 ms
12 ns.fudan.sh.cn (61.129.42.6) 中国 上海 电信 AS4812 91.86 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 0.39 ms
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 41.90 ms
3 * * * *
4 * * * *
5 tenge0-5-0-0.br02.hkg15.pccwbtn.net (63.223.15.174) 中国 香港 pccw.com AS3491 17.93 ms
6 tenge0-5-0-0.br02.hkg15.pccwbtn.net (63.223.15.174) 中国 香港 pccw.com AS3491 5.90 ms
7 63-218-1-38.static.pccwglobal.net (63.218.1.38) 中国 香港 pccw.com AS3491 6.90 ms
8 219.158.25.141 中国 广东 广州 联通 AS4837 11.85 ms
9 219.158.103.33 中国 广东 广州 联通 AS4837 11.76 ms
10 219.158.103.217 中国 广东 广州 联通 AS4837 28.88 ms
11 219.158.6.213 中国 上海 联通 AS4837 43.65 ms
12 * * * *
13 139.226.214.38 中国 上海 联通 AS17621 42.06 ms
14 112.64.249.154 中国 上海 联通 AS17621 40.48 ms
15 210.22.80.1 中国 上海 联通 AS17621 38.13 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 0.47 ms
3 * * * *
4 * * * *
5 223.120.2.10 中国 广东 广州 移动 AS58453 7.98 ms
6 221.183.55.62 中国 移动 AS9808 8.07 ms
7 221.176.24.149 中国 广东 广州 移动 AS9808 27.17 ms
8 221.176.22.161 中国 广东 广州 移动 AS9808 11.97 ms
9 221.176.17.93 中国 上海 移动 AS9808 39.05 ms
10 221.183.13.162 中国 上海 移动 AS9808 77.82 ms
11 117.185.10.242 中国 上海 移动 AS9808 40.18 ms
12 120.204.198.131 中国 上海 移动 AS9808 37.70 ms
13 120.204.198.146 中国 上海 移动 AS9808 40.24 ms
14 120.204.198.210 中国 上海 移动 AS9808 39.69 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 5.55 ms
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 45.96 ms
3 * * * *
4 * * * *
5 ct.pos0-4-1-1.br04.hkg05.pccwbtn.net (63.218.215.198) 中国 香港 pccw.com AS3491 29.78 ms
6 202.97.60.9 中国 上海 电信 AS4134 33.65 ms
7 202.97.35.109 中国 上海 电信 AS4134 32.67 ms
8 202.97.57.146 中国 上海 电信 AS4134 37.65 ms
9 202.97.82.86 中国 广东 广州 电信 AS4134 50.13 ms
10 * * * *
11 * * * *
12 113.98.103.110 中国 广东 广州 电信 AS4134 49.29 ms
13 183.63.68.234 中国 广东 广州 电信 AS4134 51.15 ms
14 206.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.206) 中国 广东 广州 电信 AS4134 39.08 ms
15 210.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.210) 中国 广东 广州 电信 AS4134 45.39 ms
16 210.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.210) 中国 广东 广州 电信 AS4134 46.86 ms
17 * * * *
18 * * * *
19 61.140.99.33 中国 广东 广州 电信 AS4134 45.20 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 0.52 ms
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 24.30 ms
3 * * * *
4 * * * *
5 tenge0-4-0-10.br02.hkg15.pccwbtn.net (63.223.15.138) 中国 香港 pccw.com AS3491 20.02 ms
6 63-218-1-38.static.pccwglobal.net (63.218.1.38) 中国 香港 pccw.com AS3491 21.07 ms
7 219.158.3.129 中国 广东 广州 联通 AS4837 16.07 ms
8 219.158.96.210 中国 广东 广州 联通 AS4837 18.96 ms
9 219.158.103.41 中国 广东 广州 联通 AS4837 12.48 ms
10 120.81.0.150 中国 广东 广州 联通 AS17816 11.90 ms
11 221.4.6.14 中国 广东 广州 联通 AS17816 34.04 ms
12 cache1-gd.cnc-gd.net (221.5.88.88) 中国 广东 广州 联通 AS17816 13.03 ms
跳数 IP 路由 ASN 延迟
1 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 0.68 ms
2 *.*.*.*(已隐藏) 中国 香港 dmit.io AS54574 75.94 ms
3 * * * *
4 * * * *
5 hundredge0-5-0-0.br02.hkg08.pccwbtn.net (63.223.29.198) 中国 香港 pccw.com AS3491 4.94 ms
6 63.218.205.154 中国 香港 pccw.com AS3491 5.97 ms
7 ae-3.r02.tkokhk01.hk.bb.gin.ntt.net (129.250.6.102) 中国 香港 ntt.com AS2914 5.92 ms
8 ce-0-4-0-0.r02.tkokhk01.hk.ce.gin.ntt.net (203.131.241.82) 中国 香港 ntt.com AS2914 6.06 ms
9 * * * *
10 223.120.2.82 中国 广东 广州 移动 AS58453 27.41 ms
11 * * * *
12 221.183.25.122 中国 广东 广州 移动 AS9808 22.96 ms
13 221.176.22.105 中国 广东 广州 移动 AS9808 69.09 ms
14 * * * *
15 120.198.206.158 中国 广东 广州 移动 AS56040 50.69 ms
16 183.235.224.206 中国 广东 广州 移动 AS56040 61.14 ms
17 ns5.gd.cnmobile.net (211.136.192.6) 中国 广东 广州 移动 AS56040 67.92 ms

代理速度测试

网络环境:中国联通 100 Mbps

总结

DMIT 香港 VPS 整体线路良好,性价比较高,如果想购买一个香港 VPS 建站或搭建代理使用,推荐这款月付 $14.9 的 pvm.n2.mini 套餐。

]]>
https://desperadoj.com/11.html/feed 0
Vultr 东京月付 $3.5 VPS 测评 https://desperadoj.com/10.html https://desperadoj.com/10.html#respond Sun, 02 Sep 2018 03:54:07 +0000 https://desperadoj.com/?p=787 简介

Vultr 是一家成立于 2014 年的云服务厂商,其 VPS 全线使用 SSD,且全部基于 KVM 架构,拥有包括亚洲、美洲、欧洲等全球 15 个机房线路,小时计费,流量单向计算(计算流量耗费较多一向),支持支付宝及微信付款。近日 Vultr 新增一款月付 $3.5 VPS 方案,其配置与之前的 $2.5 方案相同,不过随着 Vultr 价格策略的调整,后者目前仅提供 IPv6 地址,前者包含 IPv4。Vultr 的价格策略调整如下:

  • 原 $2.5 方案 –> 移除 IPv4 –> 新 $2.5 方案
  • 原 $2.5 方案 –> 保留 IPv4 –> 新 $3.5 方案

目前 Vultr 有如下优惠活动在进行,分别是:

  1. 新用户注册赠送 $25(赠送额度 1 年有效期)
  2. 新用户注册赠送 $100(赠送额度 2 个月有效期)
  3. 新用户充值赠送同价值额度(赠送额度不超过 $100,1 年有效期)
  4. 新用户注册充值 $5 赠送 $50

东京节点测试地址:点击此处

  • IPv4 测试地址:108.61.201.151
  • IPv6 测试地址:2001:19f0:7000:8002:5054:ff:feb5:68b5
  • 测试文件:100MB 1GB

测试

本次测试基于月付 $3.5 套餐,其基础配置如下:

CPU 1 核
内存 512 MB
硬盘 20 GB SSD
流量 500 GB / 月
带宽 1000 Mbps
IPv4 1 个
IPv6 1 个
特点 免费快照

测试环境:

  • OS: CentOS 7.5
  • TCP congestion control: BBR

基础性能测试

去程 Ping 检测

线路 节点数目 最快节点 最慢节点 平均响应
全部 79 广东广州电信(天翼云二区) 83.2 毫秒 北京(华为云) 319.2 毫秒 157.9 毫秒
联通线路 8 天津联通 108.7 毫秒 重庆联通 150.2 毫秒 125.3 毫秒
电信线路 40 广东广州电信(天翼云二区) 83.2 毫秒 江苏南京电信(天翼云) 254.7 毫秒 169.9 毫秒
移动线路 5 广州(移动) 99.9 毫秒 江苏常州(移动) 161.6 毫秒 120.0 毫秒
铁通线路 2 辽宁沈阳铁通 119.5 毫秒 吉林长春铁通 138.9 毫秒 129.2 毫秒
东北地区 5 辽宁沈阳铁通 119.5 毫秒 吉林长春铁通 138.9 毫秒 128.6 毫秒
华北地区 9 天津(腾讯云) 108.1 毫秒 北京(华为云) 319.2 毫秒 154.1 毫秒
西北地区 4 陕西西安电信(天翼云二区) 123.5 毫秒 陕西西安电信(天翼云一区) 188.6 毫秒 144.6 毫秒
西南地区 11 四川德阳移动 127.4 毫秒 贵州黔西南布依族苗族自治州(明源网络) 192.3 毫秒 150.1 毫秒
华中地区 6 武汉电信(杭州牛盾) 111.4 毫秒 河南洛阳(bgp) 174.5 毫秒 128.3 毫秒
华东地区 32 安徽合肥移动 103.6 毫秒 江苏南京电信(天翼云) 254.7 毫秒 190.6 毫秒
华南地区 12 广东广州电信(天翼云二区) 83.2 毫秒 广东深圳(阿里云) 151.3 毫秒 112.2 毫秒

回程路由追踪

上海电信上海联通上海移动广东电信广东联通广东移动
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 15.18 ms
3 * * * *
4 * * * *
5 ae-22.a02.tokyjp05.jp.bb.gin.ntt.net (120.88.53.65) 日本 东京都 东京 ntt.com AS2914 5.52 ms
6 ae-25.r02.tokyjp05.jp.bb.gin.ntt.net (129.250.6.182) 日本 东京都 东京 ntt.com AS2914 4.52 ms
7 ae-3.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.29) 日本 东京都 东京 ntt.com AS2914 6.83 ms
8 ae-11.r27.tokyjp05.jp.bb.gin.ntt.net (129.250.2.154) 日本 东京都 东京 ntt.com AS2914 3.05 ms
9 202.97.94.13 中国 广东 广州 电信 AS4134 159.56 ms
10 202.97.94.89 中国 广东 广州 电信 AS4134 158.83 ms
11 202.97.94.133 中国 广东 广州 电信 AS4134 147.61 ms
12 202.101.63.49 中国 上海 电信 AS4812 172.65 ms
13 101.95.89.58 中国 上海 电信 AS4812 167.19 ms
14 61.152.81.146 中国 上海 电信 AS4812 171.77 ms
15 101.95.117.198 中国 上海 电信 AS4812 164.18 ms
16 ns.fudan.sh.cn (61.129.42.6) 中国 上海 电信 AS4812 169.69 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 12.73 ms
3 * * * *
4 * * * *
5 ae-22.a02.tokyjp05.jp.bb.gin.ntt.net (120.88.53.65) 日本 东京都 东京 ntt.com AS2914 11.27 ms
6 ae-25.r02.tokyjp05.jp.bb.gin.ntt.net (129.250.6.182) 日本 东京都 东京 ntt.com AS2914 5.91 ms
7 ae-3.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.29) 日本 东京都 东京 ntt.com AS2914 9.20 ms
8 ae-9.r25.osakjp02.jp.bb.gin.ntt.net (129.250.7.81) 日本 大阪府 大阪 ntt.com AS2914 9.22 ms
9 ae-2.r02.osakjp02.jp.bb.gin.ntt.net (129.250.2.128) 日本 大阪府 大阪 ntt.com AS2914 14.44 ms
10 219.158.39.193 中国 上海 联通 AS4837 105.10 ms
11 * * * *
12 219.158.113.101 中国 上海 联通 AS4837 119.39 ms
13 * * * *
14 139.226.210.58 中国 上海 联通 AS17621 113.32 ms
15 112.64.249.154 中国 上海 联通 AS17621 112.05 ms
16 210.22.80.1 中国 上海 联通 AS17621 111.85 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 12.95 ms
3 * * * *
4 ce-0-14-0-1.r02.tokyjp05.jp.bb.gin.ntt.net (120.88.54.97) 日本 东京都 东京 ntt.com AS2914 2.17 ms
5 ae-3.r30.tokyjp05.jp.bb.gin.ntt.net (129.250.3.23) 日本 东京都 东京 ntt.com AS2914 40.27 ms
6 ae-5.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.2.97) 中国 香港 ntt.com AS2914 49.57 ms
7 ae-1.r03.tkokhk01.hk.bb.gin.ntt.net (129.250.6.98) 中国 香港 ntt.com AS2914 48.55 ms
8 ae-1.a01.chwahk02.hk.bb.gin.ntt.net (129.250.5.161) 中国 香港 ntt.com AS2914 58.45 ms
9 203.131.254.2 中国 香港 ntt.com AS2914 51.58 ms
10 223.120.2.53 中国 香港 移动 AS58453 52.02 ms
11 * * * *
12 223.120.2.78 中国 广东 广州 移动 AS58453 56.16 ms
13 223.120.22.9 中国 上海 移动 AS58453 96.18 ms
14 221.183.55.46 中国 上海 移动 AS9808 83.20 ms
15 221.183.25.189 中国 上海 移动 AS9808 84.67 ms
16 221.176.22.9 中国 上海 移动 AS9808 83.71 ms
17 221.183.12.162 中国 上海 移动 AS9808 81.89 ms
18 117.185.10.122 中国 上海 移动 AS9808 83.23 ms
19 120.204.198.132 中国 上海 移动 AS9808 89.56 ms
20 120.204.198.146 中国 上海 移动 AS9808 83.61 ms
21 120.204.198.210 中国 上海 移动 AS9808 83.34 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 16.45 ms
3 * * * *
4 * * * *
5 ae-22.a02.tokyjp05.jp.bb.gin.ntt.net (120.88.53.65) 日本 东京都 东京 ntt.com AS2914 4.11 ms
6 ae-4.r03.tokyjp05.jp.bb.gin.ntt.net (129.250.6.188) 日本 东京都 东京 ntt.com AS2914 1.22 ms
7 ae-4.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.57) 日本 东京都 东京 ntt.com AS2914 1.32 ms
8 ae-11.r27.tokyjp05.jp.bb.gin.ntt.net (129.250.2.152) 日本 东京都 东京 ntt.com AS2914 1.47 ms
9 202.97.94.9 中国 上海 电信 AS4134 185.60 ms
10 202.97.90.54 中国 上海 电信 AS4134 190.64 ms
11 202.97.24.201 中国 上海 电信 AS4134 195.31 ms
12 202.97.82.90 中国 广东 广州 电信 AS4134 222.65 ms
13 * * * *
14 * * * *
15 121.8.90.22 中国 广东 广州 电信 AS4134 216.29 ms
16 183.63.68.238 中国 广东 广州 电信 AS4134 215.17
17 206.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.206) 中国 广东 广州 电信 AS4134 212.53 ms
18 * * * *
19 210.131.135.219.broad.gz.gd.dynamic.163data.com.cn (219.135.131.210) 中国 广东 广州 电信 AS4134 213.24 ms
20 * * * *
21 * * * *
22 61.140.99.33 中国 广东 广州 电信 AS4134 213.86 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 15.38 ms
3 * * * *
4 * * * *
5 ae-22.a02.tokyjp05.jp.bb.gin.ntt.net (120.88.53.65) 日本 东京都 东京 ntt.com AS2914 1.90 ms
6 ae-4.r03.tokyjp05.jp.bb.gin.ntt.net (129.250.6.188) 日本 东京都 东京 ntt.com AS2914 6.69 ms
7 ae-4.r31.tokyjp05.jp.bb.gin.ntt.net (129.250.3.57) 日本 东京都 东京 ntt.com AS2914 15.39 ms
8 ae-10.r26.tokyjp05.jp.bb.gin.ntt.net (129.250.2.152) 日本 东京都 东京 ntt.com AS2914 5.95 ms
9 219.158.42.5 中国 广东 广州 联通 AS4837 105.32 ms
10 219.158.98.93 中国 广东 广州 联通 AS4837 122.92 ms
11 * * * *
12 120.81.0.134 中国 广东 广州 联通 AS17816 106.50 ms
13 * * * *
14 cache1-gd.cnc-gd.net (221.5.88.88) 中国 广东 广州 联通 AS17816 97.84 ms
跳数 IP 路由 ASN 延时
1 *.*.*.*(已隐藏) * * *
2 *.*.*.*(已隐藏) 日本 东京都 东京 choopa.com AS20473 13.08 ms
3 * * * *
4 ce-0-14-0-1.r02.tokyjp05.jp.bb.gin.ntt.net (120.88.54.97) 日本 东京都 东京 ntt.com AS2914 1.64 ms
5 ae-3.r30.tokyjp05.jp.bb.gin.ntt.net (129.250.3.23) 日本 东京都 东京 ntt.com AS2914 73.84 ms
6 ae-5.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.2.97) 日本 东京都 东京 ntt.com AS2914 48.94 ms
7 ae-1.r02.tkokhk01.hk.bb.gin.ntt.net (129.250.6.92) 日本 东京都 东京 ntt.com AS2914 47.59 ms
8 ce-0-4-0-0.r02.tkokhk01.hk.ce.gin.ntt.net (203.131.241.82) 中国 香港 ntt.com AS2914 54.76 ms
9 * * * *
10 223.120.2.82 中国 广东 广州 移动 AS58453 57.17 ms
11 221.183.55.94 中国 广东 广州 移动 AS9808 58.15 ms
12 221.176.24.61 中国 广东 广州 移动 AS9808 58.10 ms
13 221.176.22.237 中国 广东 广州 移动 AS9808 72.00 ms
14 221.183.26.54 中国 广东 广州 移动 AS9808 59.16 ms
15 211.136.203.26 中国 广东 广州 移动 AS56040 85.10 ms
16 183.235.224.210 中国 广东 广州 移动 AS56040 59.50 ms
17 ns5.gd.cnmobile.net (211.136.192.6) 中国 广东 广州 移动 AS56040 60.33 ms

代理速度测试

网络环境:中国联通 100 Mbps

总结

Vultr 本次新增的月付 $3.5 VPS 方案,硬件配置及网络尚可,用来搭建 SS / FPR / 小型个人网站 等都是不错的选择。

]]>
https://desperadoj.com/10.html/feed 0
WordPress DUX-MOD 主题 https://desperadoj.com/9.html https://desperadoj.com/9.html#respond Wed, 29 Aug 2018 13:48:09 +0000 https://desperadoj.com/?p=719 主题简介

本博客使用的 WordPress 主题为 DUX-MOD,是一款基于 themebetter 的 DUX 主题修改制作的二次开发作品,在原基础上有以下改进:

  • 修复错误代码
  • 优化主题样式
  • 增加侧边栏和页脚风格设置
  • 增加用户评论 UA 显示
  • 集成微博、贴吧表情
  • 更新 Font Awesome 字体至 Version Free-5.3.1

站点演示

如风

更新日志

1.1 (8/31/2018)

  • 增加侧边栏和页脚风格设置
  • 增加用户评论 UA 显示
  • 修复默认首页焦点图错误问题

1.0 (8/29/2018)

  • DUX-MOD 发布,基于 DUX 5.0
]]>
https://desperadoj.com/9.html/feed 0
为 WordPress 增加微博、贴吧及其他自定义表情 https://desperadoj.com/8.html https://desperadoj.com/8.html#comments Wed, 22 Aug 2018 15:56:07 +0000 https://desperadoj.com/?p=605 WordPress 自带的表情不是很好看,而微博 [微博doge] 和贴吧 [贴吧滑稽] 的表情更丰富美观,于是萌生了更换表情的想法,并马上付诸于实践。过程中参考了 重新定义wordpress的表情系统WordPress 4.2+禁用Emoji表情 两篇文章,实现自定义 WordPress 表情、表情分组、鼠标悬浮预览等功能。

演示

表情分组

鼠标悬浮预览效果

实现方法

functions.php 部分

在 functions.php 中添加如下代码,输入对应表情代码后就可以显示相关表情。

//表情

//取当前主题下自定义的表情图片路径
function custom_gitsmilie_src($old, $img) {
    return get_stylesheet_directory_uri() . '/img/emojis/all/' . $img;
}

//移除表情样式 max-height=1em 限制
function reset_smilies_style( $content ) {
    return str_replace( 'class="wp-smiley" style="height: 1em; max-height: 1em;"', 'class="wp-smiley"', $content );
}

function init_gitsmilie() {
    global $wpsmiliestrans;
    //默认表情文本与表情图片的对应关系(可自定义修改)
    
    //移除WordPress的Emoji钩子,挂上主题下的表情路径和修改的样式
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
    add_filter('smilies_src', 'custom_gitsmilie_src', 10, 2);
    add_filter( 'the_content', 'reset_smilies_style', 99 );
    add_filter( 'the_excerpt', 'reset_smilies_style', 99 );
    add_filter( 'comment_text', 'reset_smilies_style', 99 );
}
add_action('init', 'init_gitsmilie', 5); 

if ( !isset( $wpsmiliestrans ) ) {
$wpsmiliestrans = array(
    //微博表情
    '[微博doge]' => '0.png',
    '[微博喵喵]' => '1.png',
    '[微博二哈]' => '2.png',
    '[微博猪头]' => '3.png',
    '[微博兔子]' => '4.png',
    '[微博熊猫]' => '5.png',
    '[微博草泥马]' => '6.png',
    '[微博骷髅]' => '7.png',
    '[微博奥特曼]' => '8.png',
    '[微博抱抱]' => '9.png',
    '[微博摊手]' => '10.png',
    '[微博跪了]' => '11.png',
    '[微博吃瓜]' => '12.png',
    '[微博允悲]' => '13.png',
    '[微博坏笑]' => '14.png',
    '[微博笑cry]' => '15.png',
    '[微博馋嘴]' => '16.png',
    '[微博拜拜]' => '17.png',
    '[微博右哼哼]' => '18.png',
    '[微博左哼哼]' => '19.png',
    '[微博怒骂]' => '20.png',
    '[微博顶]' => '21.png',
    '[微博微笑]' => '22.png',
    '[微博偷笑]' => '23.png',
    '[微博舔屏]' => '24.png',
    '[微博亲亲]' => '25.png',
    '[微博太开心]' => '26.png',
    '[微博挤眼]' => '27.png',
    '[微博摔]' => '28.png',
    '[微博感冒]' => '29.png',
    '[微博可怜]' => '30.png',
    '[微博汗]' => '31.png',
    '[微博色]' => '32.png',
    '[微博可爱]' => '33.png',
    '[微博钱]' => '34.png',
    '[微博思考]' => '35.png',
    '[微博生病]' => '36.png',
    '[微博困]' => '37.png',
    '[微博互粉]' => '38.png',
    '[微博睡]' => '39.png',
    '[微博并不简单]' => '40.png',
    '[微博害羞]' => '41.png',
    '[微博费解]' => '42.png',
    '[微博挖鼻]' => '43.png',
    '[微博悲伤]' => '44.png',
    '[微博打脸]' => '45.png',
    '[微博抓狂]' => '46.png',
    '[微博哈哈]' => '47.png',
    '[微博傻眼]' => '48.png',
    '[微博晕]' => '49.png',
    '[微博鄙视]' => '50.png',
    '[微博哼]' => '51.png',
    '[微博哈欠]' => '52.png',
    '[微博泪]' => '53.png',
    '[微博怒]' => '54.png',
    '[微博闭嘴]' => '55.png',
    '[微博疑问]' => '56.png',
    '[微博白眼]' => '57.png',
    '[微博吐]' => '58.png',
    '[微博黑线]' => '59.png',
    '[微博委屈]' => '60.png',
    '[微博笑而不语]' => '61.png',
    '[微博阴险]' => '62.png',
    '[微博嘘]' => '63.png',
    '[微博嘻嘻]' => '64.png',
    '[微博爱你]' => '65.png',
    '[微博吃惊]' => '66.png',
    '[微博污]' => '67.png',
    '[微博鼓掌]' => '68.png',
    '[微博憧憬]' => '69.png',
    '[微博酷]' => '70.png',
    '[微博失望]' => '71.png',
    '[微博good]' => '72.png',
    '[微博弱]' => '73.png',
    '[微博耶]' => '74.png',
    '[微博来]' => '75.png',
    '[微博握手]' => '76.png',
    '[微博加油]' => '77.png',
    '[微博haha]' => '78.png',
    '[微博拳头]' => '79.png',
    '[微博赞]' => '80.png',
    '[微博ok]' => '81.png',
    '[微博NO]' => '82.png',
    '[微博作揖]' => '83.png',

    //贴吧表情
    '[贴吧呵呵]' => '84.png',
    '[贴吧哈哈]' => '85.png',
    '[贴吧吐舌]' => '83.png',
    '[贴吧啊]' => '87.png',
    '[贴吧酷]' => '88.png',
    '[贴吧怒]' => '89.png',
    '[贴吧开心]' => '90.png',
    '[贴吧汗]' => '91.png',
    '[贴吧泪]' => '92.png',
    '[贴吧黑线]' => '93.png',
    '[贴吧鄙视]' => '94.png',
    '[贴吧不高兴]' => '95.png',
    '[贴吧真棒]' => '96.png',
    '[贴吧钱]' => '97.png',
    '[贴吧疑问]' => '98.png',
    '[贴吧阴险]' => '99.png',
    '[贴吧吐]' => '100.png',
    '[贴吧咦]' => '101.png',
    '[贴吧委屈]' => '102.png',
    '[贴吧花心]' => '103.png',
    '[贴吧呼~]' => '104.png',
    '[贴吧笑眼]' => '105.png',
    '[贴吧冷]' => '106.png',
    '[贴吧太开心]' => '107.png',
    '[贴吧滑稽]' => '108.png',
    '[贴吧勉强]' => '109.png',
    '[贴吧狂汗]' => '110.png',
    '[贴吧乖]' => '111.png',
    '[贴吧睡觉]' => '112.png',
    '[贴吧惊哭]' => '113.png',
    '[贴吧升起]' => '114.png',
    '[贴吧惊讶]' => '115.png',
    '[贴吧喷]' => '116.png',
    '[贴吧爱心]' => '117.png',
    '[贴吧心碎]' => '118.png',
    '[贴吧玫瑰]' => '119.png',
    '[贴吧礼物]' => '120.png',
    '[贴吧彩虹]' => '121.png',
    '[贴吧星星月亮]' => '122.png',
    '[贴吧太阳]' => '123.png',
    '[贴吧钱币]' => '124.png',
    '[贴吧灯泡]' => '125.png',
    '[贴吧茶杯]' => '126.png',
    '[贴吧蛋糕]' => '127.png',
    '[贴吧音乐]' => '128.png',
    '[贴吧haha]' => '129.png',
    '[贴吧胜利]' => '130.png',
    '[贴吧大拇指]' => '131.png',
    '[贴吧弱]' => '132.png',
    '[贴吧OK]' => '133.png',
    );
}

HTML 部分

<!--引用JS,作者是基于jquery库做的,不要忘记库的引用,rl_exp.js即下文的javascript部分-->
<script type="text/javascript" src="https://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js?ver=5.0"></script>
<script type="text/javascript" src="/wp-content/themes/dux/js/rl_exp.js"></script>

<!--表情按钮-->
<a href="javascript:void(0);" id="rl_exp_btn"><i class="far fa-smile"></i></a>

<!--实现分组,下面都是配合JS来实现的-->
<div class="rl_exp" id="rl_bq" style="display:none;">
    <ul class="rl_exp_tab clearfix">
        <li><a href="javascript:void(0);" class="selected">微博</a></li>
        <li><a href="javascript:void(0);">贴吧</a></li>
    </ul>
    <ul class="rl_exp_main clearfix rl_selected"></ul>
    <ul class="rl_exp_main clearfix" style="display:none;"></ul>
    <a href="javascript:void(0);" class="close">×</a>
</div>

CSS 样式

/*取消表情边距,设置单行显示*/
.wp-smiley {
    display: inline-block!important;
    margin: 0px!important;
    padding: 0px!important;
}

/*表情按钮样式*/
#rl_exp_btn {
    line-height: 36px;
    margin: 5px;
    padding: 3px;
    color: #b9babb;
    font-size: 20px;
}

/*鼠标悬浮预览*/
#preview {
    position: absolute;
    border: 1px solid #ccc;
    background: #f5f5f5;
    padding: 5px;
    display: none;
    color: #fff;
    z-index: 1002;
}

/*表情框样式*/
.rl_exp {
    margin: 0 auto;
    position: absolute;
    padding: 6px;
    border: 1px solid #D0D0D0;
    box-shadow: 0 1px 1px rgba(0, 0, 0, .12), 0 1px 1px rgba(0, 0, 0, .12);
    overflow: hidden;
    background: none repeat scroll 0 0 white;
    zoom: 1;
    z-index: 1000;
}

/*分组标签样式*/
.rl_exp ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.rl_exp ul li {
    display: list-item;
}

.rl_exp ul.rl_exp_tab {
    margin: -6px -6px 6px;
    padding: 6px 6px 0;
    list-style: none;
    overflow: hidden;
    border-bottom: 1px solid #d0d0d0;
    border-top: 1px solid #fff;
    background: -moz-linear-gradient(center top, #F6F6F6, #E5E5E5) repeat scroll 0 0 transparent;
    background: -webkit-gradient(linear, center top, center bottom, from(#f6f6f6), to(#E5E5E5)) repeat scroll 0 0 transparent;
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#E5E5E5');
}

.rl_exp ul.rl_exp_tab li {
    float: left;
    margin-right: 10px;
    display: list-item;
    text-align: -webkit-match-parent;
}

.rl_exp ul.rl_exp_tab li a {
    display: block;
    padding: 3px 7px;
    font-size: 14px;
    text-decoration: none;
    color: #979797;
    border: 1px solid #c3c3c3;
    margin-bottom: -1px;
}

.rl_exp ul.rl_exp_tab li a.selected {
    zoom: 1;
    background: #fff;
    border-bottom: 1px solid #fff;
    box-shadow: none;
    text-shadow: none;
}

/*表情内容样式*/
.rl_exp_main {
    margin: 0;
    padding: 0;
}

.rl_exp_item {
    cursor: pointer;
    float: left;
    border: 1px solid #fce089;
    overflow: hidden;
    margin: -1px 0 0 -1px;
    padding: 4px;
    text-align: center;
    background: #fef9e7;
}

.rl_exp_item:hover {
    border: 1px solid #0095cd;
    background: #fff9ec;
    position: relative;
    z-index: 1001;
}

.rl_exp_item img {
    display: inline-block;
    *zoom: 1;
    border: 0;
    width: 22px;
    height: 22px;
}

/*关闭按钮样式*/
.close {
    position: absolute;
    right: 6px;
    top: 6px;
    text-decoration: none;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 20px;
    line-height: 12px;
    color: #000;
    text-shadow: 0 1px 0 #fff;
    opacity: 0.2;
    filter: alpha(opacity=20);
}

.close:hover, .close:focus {
    color: #000;
    cursor: pointer;
    opacity: 0.4;
    filter: alpha(opacity=40);
}

/*公共清浮类,摘自bootstrap*/
.clearfix {
    *zoom: 1;
}

.clearfix:before, .clearfix:after {
    display: table;
    line-height: 0;
    content: "";
}

.clearfix:after {
    clear: both;
}

Javascript 部分

/*
*	评论表情渲染JS
*	@author:	小毛(微博:BUPT朱小毛)
*	@data:		2013年2月17日
*	@version:	1.0
*	@rely:		jQuery
*/
$(function () {
    /*
    *		参数说明
    *		baseUrl:	【字符串】表情路径的基地址
    *		pace:		【数字】表情弹出层淡入淡出的速度
    *		dir:		【数组】保存表情包文件夹名字
    *		text:		【二维数组】保存表情包title文字
    *		num:		【数组】保存表情包表情个数
    *		isExist:	【数组】保存表情是否加载过,对于加载过的表情包不重复请求。
    */
    var rl_exp = {
        baseUrl: '/wp-content/themes/dux/img/emojis/',
        pace: 200,
        dir: ['weibo', 'tieba'],
        text: [  /*表情包title文字,自己补充*/
            [
                '微博doge', '微博喵喵', '微博二哈', '微博猪头', '微博兔子', '微博熊猫', '微博草泥马', '微博骷髅', '微博奥特曼', '微博抱抱', '微博摊手', '微博跪了', '微博吃瓜', '微博允悲', '微博坏笑', '微博笑cry', '微博馋嘴', '微博拜拜', '微博右哼哼', '微博左哼哼', '微博怒骂', '微博顶', '微博微笑', '微博偷笑', '微博舔屏', '微博亲亲', '微博太开心', '微博挤眼', '微博衰', '微博感冒', '微博可怜', '微博汗', '微博色', '微博可爱', '微博钱', '微博思考', '微博生病', '微博困', '微博互粉', '微博睡', '微博并不简单', '微博害羞', '微博费解', '微博挖鼻', '微博悲伤', '微博打脸', '微博抓狂', '微博哈哈', '微博傻眼', '微博晕', '微博鄙视', '微博哼', '微博哈欠', '微博泪', '微博怒', '微博闭嘴', '微博疑问', '微博白眼', '微博吐', '微博黑线', '微博委屈', '微博笑而不语', '微博阴险', '微博嘘', '微博嘻嘻', '微博爱你', '微博吃惊', '微博污', '微博鼓掌', '微博憧憬', '微博酷', '微博失望', '微博good', '微博弱', '微博耶', '微博来', '微博握手', '微博加油', '微博haha', '微博拳头', '微博赞', '微博ok', '微博NO', '微博作揖'
            ],
            [
                '贴吧呵呵', '贴吧哈哈', '贴吧吐舌', '贴吧啊', '贴吧酷', '贴吧怒', '贴吧开心', '贴吧汗', '贴吧泪', '贴吧黑线', '贴吧鄙视', '贴吧不高兴', '贴吧真棒', '贴吧钱', '贴吧疑问', '贴吧阴险', '贴吧吐', '贴吧咦', '贴吧委屈', '贴吧花心', '贴吧呼~', '贴吧笑眼', '贴吧冷', '贴吧太开心', '贴吧滑稽', '贴吧勉强', '贴吧狂汗', '贴吧乖', '贴吧睡觉', '贴吧惊哭', '贴吧升起', '贴吧惊讶', '贴吧喷', '贴吧爱心', '贴吧心碎', '贴吧玫瑰', '贴吧礼物', '贴吧彩虹', '贴吧星星月亮', '贴吧太阳', '贴吧钱币', '贴吧灯泡', '贴吧茶杯', '贴吧蛋糕', '贴吧音乐', '贴吧haha', '贴吧胜利', '贴吧大拇指', '贴吧弱', '贴吧OK'
            ],
        ],
        num: [84, 50],
        isExist: [0, 0],
        bind: function (i) {
            $("#rl_bq .rl_exp_main").eq(i).find('.rl_exp_item').each(function () {
                $(this).bind('click', function () {
                    rl_exp.insertText(document.getElementById('comment'), ' ' + '[' + $(this).find('img').attr('title') + ']' + ' ');
                    $('#rl_bq').fadeOut(rl_exp.pace);
                });
            });
        },
        /*加载表情包函数*/
        loadImg: function (i) {
            var node = $("#rl_bq .rl_exp_main").eq(i);
            for (var j = 0; j < rl_exp.num[i]; j++) {
                var domStr = '<li class="rl_exp_item">' +
                    '<img class="emoji" src="' + rl_exp.baseUrl + '' + rl_exp.dir[i] + '/' + j + '.png" alt="' + rl_exp.text[i][j] + '" title="' + rl_exp.text[i][j] + '" />' +
                    '</li>';
                $(domStr).appendTo(node);

                /*鼠标悬停显示预览*/
                xOffset = -25;
                yOffset = -30;
                $(".emoji").hover(function (e) {
                    $("body").append("<div id='preview'><img src='" + this.src + "'/></div>");
                    $("#preview")
                        .css("top", (e.pageY - xOffset) + "px")
                        .css("left", (e.pageX + yOffset) + "px")
                        .fadeIn("fast");
                },
                    function () {
                        $("#preview").remove();
                    });
                $(".emoji").mousemove(function (e) {
                    $("#preview")
                        .css("top", (e.pageY - xOffset) + "px")
                        .css("left", (e.pageX + yOffset) + "px");
                });
            }
            rl_exp.isExist[i] = 1;
            rl_exp.bind(i);
        },
        /*在textarea里光标后面插入文字*/
        insertText: function (obj, str) {
            obj.focus();
            if (document.selection) {
                var sel = document.selection.createRange();
                sel.text = str;
            } else if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number') {
                var startPos = obj.selectionStart,
                    endPos = obj.selectionEnd,
                    cursorPos = startPos,
                    tmpStr = obj.value;
                obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
                cursorPos += str.length;
                obj.selectionStart = obj.selectionEnd = cursorPos;
            } else {
                obj.value += str;
            }
        },
        init: function () {
            $("#rl_bq > ul.rl_exp_tab > li > a").each(function (i) {
                $(this).bind('click', function () {
                    if ($(this).hasClass('selected'))
                        return;
                    if (rl_exp.isExist[i] == 0) {
                        rl_exp.loadImg(i);
                    }
                    $("#rl_bq > ul.rl_exp_tab > li > a.selected").removeClass('selected');
                    $(this).addClass('selected');
                    $('#rl_bq .rl_selected').removeClass('rl_selected').hide();
                    $('#rl_bq .rl_exp_main').eq(i).addClass('rl_selected').show();
                });
            });
            /*绑定表情弹出按钮响应,初始化弹出默认表情。*/
            $("#rl_exp_btn").bind('click', function () {
                if (rl_exp.isExist[0] == 0) {
                    rl_exp.loadImg(0);
                }
                var w = $(this).position();
                $('#rl_bq').css({ left: w.left, top: w.top + 30 }).fadeIn(400);
            });
            /*绑定关闭按钮*/
            $('#rl_bq a.close').bind('click', function () {
                $('#rl_bq').fadeOut(rl_exp.pace);
            });
            /*绑定document点击事件,对target不在rl_bq弹出框上时执行rl_bq淡出,并阻止target在弹出按钮的响应。*/
            $(document).bind('click', function (e) {
                var target = $(e.target);
                if (target.closest("#rl_exp_btn").length == 1)
                    return;
                if (target.closest("#rl_bq").length == 0) {
                    $('#rl_bq').fadeOut(rl_exp.pace);
                }
            });
        }
    };
    rl_exp.init();  //调用初始化函数。
});

资源下载

下面提供本博客所使用的微博及贴吧表情包资源,增添或删减表情注意保持命名序号连续,并修改上文代码中的对应路径。

]]>
https://desperadoj.com/8.html/feed 1