Monthly Archive 二月 2018

By柏小白

慢慢,收集css代码块(持续更新……)

1./*两端对齐 若单行,至少要3个字符,只有两个字符的,中间补一个空格*/
.text_justify {
   text-align: justify; text-justify: distribute-all-lines;/*ie6-8*/
   text-align-last: justify;/* ie9*/
   -moz-text-align-last: justify;/*ff*/
   -webkit-text-align-last: justify;/*chrome 20+*/ }
   @media screen and (-webkit-min-device-pixel-ratio:0) {/* chrome*/
   .aaa:after { content: "."; display: inline-block; width: 100%; overflow: hidden; height: 0; }
}
2./*滚动条*/
#nicescroll1{overflow-y:auto;overflow-x:hidden;height:580px;
scrollbar-arrow-color:#302D30; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#302D30; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
#nicescroll2{overflow-y:auto;overflow-x:hidden;height:396px;
scrollbar-arrow-color:#302D30; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#302D30; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
#commend_list{overflow-y:auto;overflow-x:hidden;height:229px;
scrollbar-arrow-color:#f8f9fb; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#f8f9fb; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
 
3./*chrome滚动条*/
::-webkit-scrollbar-track-piece{
 -webkit-border-radius:0;
}
::-webkit-scrollbar{
 width:8px;
 height:8px;
}
::-webkit-scrollbar-thumb{
 height:50px;
 background-color:#000;
 -webkit-border-radius:4px;
 outline-offset:-2px;
 border: 2px solid #000;
}
::-webkit-scrollbar-thumb:hover{
 height:50px;
 background-color:#000;
 -webkit-border-radius:4px;/*两端对齐 若单行,至少要3个字符,只有两个字符的,中间补一个空格*/
.text_justify {
   text-align: justify; text-justify: distribute-all-lines;/*ie6-8*/ 
   text-align-last: justify;/* ie9*/ 
   -moz-text-align-last: justify;/*ff*/ 
   -webkit-text-align-last: justify;/*chrome 20+*/ }
   @media screen and (-webkit-min-device-pixel-ratio:0) {/* chrome*/
   .aaa:after { content: "."; display: inline-block; width: 100%; overflow: hidden; height: 0; }
}

4./* 实现背景固定的效果 */
.背景图相对于元素固定{
    background-attachment: fixed;
    width: 100%;
    height: 300px;
    background: url(https://s.w.org/images/home/collage-min.jpg?3) center top;
    background-size: cover;
    box-shadow: inset 0 0 8px rgba(0,0,0,.4);
    height: 600px;
    background-attachment: fixed;
    }

 

5. 1px 方案

做过移动端需求的前端肯定是避免不了处理 1px 细线问题,这个问题的原因就是 UI 对页面美观度的要求越来越高(不要和我说这是 retina 屏的问题)。

据小生所知好像没有什么兼容性特别好的方案,这里我只是提供两种种相对较好的方案。

使用伪类 + transform

.border_bottom { 
    overflow: hidden; 
    position: relative; 
    border: none!important; 
}
.border_bottom:after { 
    content: ".";
    position: absolute; 
    left: 0; 
    bottom: 0; 
    width: 100%; 
    height: 1px; 
    background-color: #d4d6d7; 
    -webkit-transform-origin: 0 0;  
    transform-origin: 0 0; 
    -webkit-transform: scaleY(0.5);
    transform: scaleY(0.5);
}

使用 box-shadow 模拟

.border_bottom {
  box-shadow: inset 0px -1px 1px -1px #d4d6d
 
By柏小白

openvpn 快速搭建

By柏小白

SSR搭建

客户端下载
ShadowsocksR-4.7.0
SSR搭建与加速介绍
2017.11.7
ShadowsocksR一键安装脚本

Shadowsocks
本脚本适用环境:
系统支持:CentOS6+
内存要求:≥128M
日期:2017 年 07 月 27 日

操作前准备:
系统基础优化,:

关闭防火墙

关于本脚本:
一键安装 ShadowsocksR 服务端。
请下载与之配套的客户端程序来连接。
(以下客户端只有 Windows 客户端和 Python 版客户端可以使用 SSR 新特性,其他原版客户端只能以兼容的方式连接 SSR 服务器)

默认配置:
服务器端口:自己设定(如不设定,默认为 8989)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,默认为 aes-256-cfb)
协议(Protocol):自己设定(如不设定,默认为 origin)
混淆(obfs):自己设定(如不设定,默认为 plain)

使用方法:
使用root用户登录,运行以下命令:

wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
chmod +x shadowsocksR.sh
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log
安装完成后,脚本提示如下:

Congratulations, ShadowsocksR server install completed!
Your Server IP :your_server_ip
Your Server Port :your_server_port
Your Password :your_password
Your Protocol :your_protocol
Your obfs :your_obfs
Your Encryption Method:your_encryption_method

Welcome to visit:https://shadowsocks.be/9.html
Enjoy it!

/etc/init.d/shadowsocks status
可以查看 ShadowsocksR 进程是否已经启动。
本脚本安装完成后,已将 ShadowsocksR 自动加入开机自启动。

使用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

配置文件路径:/etc/shadowsocks.json
日志文件路径:/var/log/shadowsocks.log
代码安装目录:/usr/local/shadowsocks

2017 年 07 月 22 日:
1、新增:安装时可选 13 种加密方式的其中之一(none 是不加密)。如下所示:

none
aes-256-cfb
aes-192-cfb
aes-128-cfb
aes-256-cfb8
aes-192-cfb8
aes-128-cfb8
aes-256-ctr
aes-192-ctr
aes-128-ctr
chacha20-ietf
chacha20
rc4-md5
rc4-md5-6
2、新增:安装时可选 7 种协议(protocol)的其中之一。如下所示:

origin
verify_deflate
auth_sha1_v4
auth_sha1_v4_compatible
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b
3、新增:安装时可选 9 种混淆(obfs)的其中之一。如下所示:

plain
http_simple
http_simple_compatible
http_post
http_post_compatible
tls1.2_ticket_auth
tls1.2_ticket_auth_compatible
tls1.2_ticket_fastauth
tls1.2_ticket_fastauth_compatible
2016 年 08 月 13 日:
1、新增多用户配置示例。注意:如果你新增了端口,也要将该端口从防火墙(iptables 或 firewalld)中打开。

一键安装最新内核并开启 BBR 脚本(开启加速)

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh ##重启验证
uname -r
sysctl net.ipv4.tcp_available_congestion_control

加密
工作原理

C->S方向
浏览器请求(socks5协议) -> ssr客户端 -> 协议插件(转为指定协议) -> 加密 -> 混淆插件(转为表面上看起来像http/tls) -> ssr服务端 -> 混淆插件(分离出加密数据) -> 解密 -> 协议插件(转为原协议) -> 转发目标服务器

其中,协议插件主要用于增加数据完整性校验,增强安全性,包长度混淆等,协议插件主要用于伪装为其它协议

客户端

客户端的协议插件暂无配置参数,混淆插件有配置参数,混淆插件列表如下:

plain:不混淆,无参数

http_simple:简易伪装为http get请求,参数为要伪装的域名,如cloudfront.com。仅在C#版客户端上支持用逗号分隔多个域名如a.com,b.net,c.org,连接时会随机使用其中之一。不填写参数时,会使用此节点配置的服务器地址作为参数。

http_post:与http_simple绝大部分相同,区别是使用POST方式发送数据,符合http规范,欺骗性更好,但只有POST请求这种行为容易被统计分析出异常。参数配置与http_simple一样

tls1.2_ticket_auth:伪装为tls请求。参数配置与http_simple一样

其它插件不推荐使用,在这里忽略

客户端的协议插件,仅建议使用origin,verify_sha1,auth_sha1_v2,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,解释如下:
origin:原版协议,为了兼容
verify_sha1:原版OTA协议,为了兼容
auth_sha1_v2:中等安全性,无时间校对的要求,适合路由器或树莓派,混淆强度大
auth_sha1_v4:较高安全性,有宽松的时间校对要求,混淆强度大
auth_aes128_md5或auth_aes128_sha1:最高安全性,有宽松的时间校对要求,计算量相对高一些,混淆强度较大

如不考虑兼容,可无视前两个

服务端

大部分插件都可以通过添加_compatible后缀以表示兼容原版,例如默认的http_simple_compatible或auth_sha1_v4_compatible这样

服务端的协议插件,仅auth_*系列有协议参数,其值为整数。表示允许的同时在线客户端数量,建议最小值为2。默认值64

服务端的混淆插件,http_simple或http_post有混淆参数,用逗号分开若干个host,表示客户端仅能使用以上任一个host连接,而留空表示客户端可以使用任意host。tls1.2_ticket_auth有混淆参数,其值为整数,表示与客户端之间允许的UTC时间差,单位为秒,为0或不填写(默认)表示无视时间差

其它说明参见客户端部分

总结

如不考虑原版的情况下,推荐使用的协议,只有auth_sha1_v4和auth_aes128_md5和auth_aes128_sha1,推荐使用的混淆只有plain,http_simple,http_post,tls1.2_ticket_auth

不要奇怪为什么推荐plain,因为混淆不总是有效果,要看各地区的策略的,有时候不混淆让其看起来像随机数据更好

原文链接:
https://shadowsocks.be/9.html

协议区别:
https://www.zhouxuanyu.com/388.html
By柏小白

自建ss服务器教程

不怕被封ip,因为vultr可以随时删除和开通服务器,新服务器就是新的ip。

自建ss/ssr教程很简单,整个教程分三步

第一步:购买VPS服务器

第二步:一键部署VPS服务器

第三步:一键加速VPS服务器 (谷歌BBR加速,推荐)


第一步:购买VPS服务器

VPS服务器需要选择国外的,首选国际知名的vultr,速度不错、稳定且性价比高,按小时计费,能够随时开通和删除服务器,新服务器即是新ip。

vultr注册地址: http://www.vultr.com/?ref=7048874 (全球15个服务器位置可选,KVM框架,最低2.5美元/月)

虽然是英文界面,但是现在的浏览器都有网页翻译功能,鼠标点击右键,选择网页翻译即可翻译成中文。

注册并邮件激活账号,充值后即可购买服务器。充值方式是paypal(首选)或支付宝,使用paypal有银行卡(包括信用卡)即可。paypal注册地址:https://www.paypal.com (paypal是国际知名的第三方支付服务商,注册一下账号,绑定银行卡即可购买国外商品)

2.5美元/月的服务器配置信息:单核 512M内存 20G SSD硬盘 带宽峰值100M 500G流量/月

5美元/月的服务器配置信息: 单核 1G内存 25G SSD硬盘 带宽峰值100M 1000G流量/月

10美元/月的服务器配置信息: 单核 2G内存 40G SSD硬盘 带宽峰值100M 2000G流量/月

20美元/月的服务器配置信息: 2cpu 4G内存 60G SSD硬盘 带宽峰值100M 3000G流量/月

40美元/月的服务器配置信息: 4cpu 8G内存 100G SSD硬盘 带宽峰值100M 4000G流量/月

vultr实际上是折算成小时来计费的,比如服务器是5美元1个月,那么每小时收费为5/30/24=0.0069美元 会自动从账号中扣费,只要保证账号有钱即可。如果你部署的服务器实测后速度不理想,你可以把它删掉(destroy),重新换个地区的服务器来部署,方便且实用。因为新的服务器就是新的ip,所以当ip被墙时这个方法很有用。

计费从你开通服务器开始算的,不管你有没有使用,即使服务器处于关机状态仍然会计费,如果你没有开通服务器就不算。比如你今天早上开通了服务器,但你有事情,晚上才部署,那么这段时间是会计费的。同理,如果你早上删掉服务器,第二天才开通新的服务器,那么这段时间是不会计费的。在账号的Billing选项里可以看到账户余额。

温馨提醒:同样的服务器位置,不同的宽带类型和地区所搭建的账号的翻墙速度会不同,这与中国电信、中国联通、中国移动国际出口带宽和线路不同有关,所以以实测为准。可以先选定一个服务器位置来按照教程进行搭建,熟悉搭建方法,当账号搭建完成并进行了bbr加速后,测试下速度自己是否满意,如果满意那就用这个服务器位置的服务器。如果速度不太满意,就一次性开几台不同的服务器位置的服务器,然后按照同样的方法来进行搭建并测试,选择最优的,之后把其它的服务器删掉,按小时计费测试成本很低。

如图:

购买vps服务器时,不推荐首选洛杉矶和日本位置的服务器,因为这两个位置的服务器前期被很多大陆同胞疯狂追捧,导致现在一开洛杉矶或日本服务器就会遇到被墙的ip,开到能联通的ip概率很小。vps服务器系统推荐选择CentOS 6.X64位的系统(系统版本不要选centos7!centos7默认的防火墙会阻止ssr的正常连接!)。完成购买后,找到系统的密码记下来,部署服务器时需要用到。

如图:

不要选centos7系统!点击图中的CentOS几个字,会弹出centos6,然后选中centos6!

接下来这一步是开启vps的ipv6 ip,选填项。如果你的电脑系统可以用ipv6,那么可以勾选此项。大多数用户没有这个需求,但有一些用户可能会用到,所以补充了这部分内容。

如果你开启了vps的ipv6,那么在后台的settings选项可以找到服务器的ipv6 ip。在部署SSR账号时,你用ipv6 ip就行。整个部署及使用过程中,记得把电脑系统开启ipv6喔。


第二步:部署VPS服务器

购买服务器后,需要部署一下。因为你买的是虚拟东西,而且又远在国外,我们需要一个叫Xshell的软件来远程部署。Xshell windows版下载地址:

国外云盘1下载

国外云盘2下载 提取密码:666

国外云盘3下载 密码:123

如果你是苹果电脑操作系统,更简单,无需下载xshell,系统可以直接连接VPS。打开终端(Terminal),输入ssh root@ip 其中“ip”替换成你VPS的ip, 按回车键,然后复制粘贴密码,按回车键即可登录。粘贴密码时有可能不显示密码,但不影响, 参考设置方法 如果不能用MAC自带的终端连接的话,直接网上搜“MAC连接SSH的软件”,有很多,然后通过软件来连接vps服务器就行,具体操作方式参考windows xshell。


部署教程:

下载windows xshell软件并安装后,打开软件

选择文件,新建

随便取个名字,然后把你的服务器ip填上

连接国外ip即服务器时,软件会先后提醒你输入用户名和密码,用户名linux系统默认都是root,密码是购买服务器后的cent系统的密码。

如果开好了服务器,发现xshell死活连不上,多半是开的服务器ip被墙了,遇到这种情况,把服务器删掉,重新开个新的服务器即可,可以是同地区的也可以选择其它地区。

连接成功后,会出现如上图所示,之后就可以复制粘贴代码部署了。

CentOS6/Debian6/Ubuntu14 ShadowsocksR一键部署管理脚本:


yum -y install wget

wget -N –no-check-certificate https://softs.fun/Bash/ssr.sh && chmod +x ssr.sh && bash ssr.sh

备用脚本:

yum -y install wget

wget -N –no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

———————————————————代码分割线————————————————

复制上面的代码到VPS服务器里,按回车键,脚本会自动安装,以后只需要运行这个快捷命令就可以出现下图的界面进行设置,快捷管理命令为:bash ssr.sh

如上图出现管理界面后,输入数字1来安装SSR服务端。如果输入1后不能进入下一步,那么请退出xshell,重新连接vps服务器,然后输入快捷管理命令bash ssr.sh 再尝试。

根据上图提示,依次输入自己想设置的端口和密码 (密码建议用复杂点的字母组合,端口号为1-65535之间的数字),回车键用于确认

如上图,选择想设置的加密方式,比如10,按回车键确认

接下来是选择协议插件,如下图:

选择并确认后,会出现上图的界面,提示你是否选择兼容原版,这里的原版指的是SS客户端(SS客户端没有协议和混淆的选项),可以根据需求进行选择,演示选择y

之后进行混淆插件的设置。 注意:有的地区需要把混淆设置成plain才好用。因为混淆不总是有效果,要看各地区的策略,有时候不混淆(plain)让其看起来像随机数据更好。(注意:tls 1.2_ticket_auth容易受到干扰!请选择除tls开头以外的其它混淆!!!)

进行混淆插件的设置后,会依次提示你对设备数、单线程限速和端口总限速进行设置,默认值是不进行限制,个人使用的话,选择默认即可,即直接敲回车键。

之后代码就正式自动部署了,到下图所示的位置,提示你下载文件,输入:y

耐心等待一会,出现下面的界面即部署完成:

根据上图就可以看到自己设置的SSR账号信息,包括IP、端口、密码、加密方式、协议插件、混淆插件,这些信息需要填入你的SSR客户端。如果之后想修改账号信息,直接输入快捷管理命令:bash ssr.sh 进入管理界面,选择相应的数字来进行一键修改。例如:

脚本演示结束。

此脚本是开机自动启动,部署一次即可。最后可以重启服务器确保部署生效(一般情况不重启也可以)。重启需要在命令栏里输入reboot ,输入命令后稍微等待一会服务器就会自动重启,一般重启过程需要2~5分钟,重启过程中Xshell会自动断开连接,等VPS重启好后才可以用Xshell软件进行连接。如果部署过程中卡在某个位置超过10分钟,可以用xshell软件断开,然后重新连接你的ip,再复制代码进行部署。


第三步:一键加速VPS服务器

此加速教程为谷歌BBR加速,Vultr的服务器框架可以装BBR加速,加速后对速度的提升很明显,所以推荐部署加速脚本。该加速方法是开机自动启动,部署一次就可以了。

按照第二步的步骤,连接服务器ip,登录成功后,在命令栏里粘贴以下代码:

【谷歌BBR加速教程】

yum -y install wget

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh

chmod +x bbr.sh

./bbr.sh

把上面整个代码复制后粘贴进去,不动的时候按回车,然后耐心等待,最后重启vps服务器即可。

演示开始,如图:

复制并粘贴代码后,按回车键确认

如下图提示,按任意键继续部署

部署到上图这个位置的时候,等待3~6分钟

最后输入y重启服务器,如果输入y提示command not found ,接着输入reboot来重启服务器,确保加速生效,bbr加速脚本是开机自动启动,装一次就可以了。


【SSR客户端下载】

第一次电脑系统使用SSR/SS客户端时,如果提示你需要安装NET Framework 4.0,网上搜一下这个东西,安装一下即可。NET Framework 4.0是SSR/SS的运行库,没有这个SSR/SS客户端无法正常运行。有的电脑系统可能会自带NET Framework 4.0。

Windows SSR客户端 下载地址 备用下载地址

MAC SSR客户端 下载地址 备用下载地址

Linux客户端一键安装配置使用脚本(使用方法见注释) 或者采用图形界面的linux ssr客户端

安卓SSR客户端 下载地址 备用下载地址

苹果手机SSR客户端:Potatso Lite、Potatso、shadowrocket都可以作为SSR客户端,但这些软件目前已经在国内的app商店下架,可以用美区的appid账号来下载。但是,如果你配置的SSR账号兼容SS客户端,或者协议选择origin且混淆选择plain,那么你可以选择苹果SS客户端软件(即协议和混淆可以不填),APP商店里面有很多,比如:openwingy、superwingy、bestwingy、wingy+、greatwingy等。

有了账号后,打开SSR客户端,填上信息,这里以windows版的SSR客户端为例子

在对应的位置,填上服务器ip、服务器端口、密码、加密方式、协议和混淆,最后将浏览器的代理设置为(http)127.0.0.1和1080即可。账号的端口号就是你自己设置的,而要上网的浏览器的端口号是1080,固定的,谷歌浏览器可以通过 SwitchyOmega 插件来设置。

启动SSR客户端后,右键SSR客户端图标,选择第一个“系统代理模式”,里面有3个子选项,选择”全局模式“,之后就可以用浏览器设置好了的代理模式(http)127.0.0.1和1080翻墙,此模式下所有的网站都会走SSR代理。

ssr9000


常见问题参考解决方法

1、用了一段时间发现ssr账号用不了了

首先ping一下自己的ip,看看能不能ping的通,ping不通那么就是ip被墙了,ip被墙时,xshell也会连接不上服务器,遇到这种情况重新部署一个新的服务器,新的服务器就是新的ip。关于怎么ping ip的方法,可以自行网上搜索,或者用xshell软件连接服务器来判断,连不上即是被墙了。vultr开通和删除服务器非常方便,新服务器即新ip,大多数vps服务商都没有这样的服务,一般的vps服务商可能会提供免费更换1次ip的服务。

2、刚搭建好的ssr账号,ip能ping通,但是还是用不了

首选排除杀毒软件的干扰,尤其是国产杀毒软件,比如360安全卫生、360杀毒软件、腾讯管家、金山卫生等。这些东西很容易干扰翻墙上网,如果你的电脑安装了这样的东西,建议至少翻墙时别用,最好卸载。其次,检查下SSR信息是否填写正确。浏览器的代理方式是否是ssr代理,即(HTTP)127.0.0.1 和1080。如果以上条件都排除,还是用不了,那么可以更换端口、加密方式、协议、混淆,或者更换服务器位置。另外,如果你的vps服务器配置的是SSR账号,即有协议和混淆且没有兼容原版(SS版),那么你必须使用SSSR客户端来使用账号,因为SS客户端没有填写协议和混淆的选项。

3、有的地区需要把混淆参数设置成plain才好用。因为混淆不总是有效果,要看各地区的策略,有时候不混淆(plain)让其看起来像随机数据更好。

4、电脑能用但手机用不了

如果你的手机用的是SS客户端,SS客户端没有填协议和混淆的地方,如果你部署的协议和混淆的时候没有选择兼容原版(SS版),因此手机是用不了的。这个时候你把协议弄成兼容原版、混淆也设置成兼容原版即可。或者直接将协议设置成origin,混淆设置成plain。

5、vps的服务器操作系统不要用的太高,太高可能会因为系统的防火墙问题导致搭建的SSR账号连不上,如果你用的centos系统,建议用centos6,不要用centos7。如果你前面不小心装了centos7系统,那么只能重装系统或者重新部署新的vps服务器。

6、vultr服务商提供的vps服务器是单向流量计算,有的vps服务商是双向流量计算,单向流量计算对于用户来说更实惠。因为我们是在vps服务器上部署SSR服务端后,再用SSR客户端翻墙,所以SSR服务端就相当于中转,比如我们看一个视频,必然会产生流量,假如消耗流量80M,那么VPS服务器会产生上传80M和下载80M流量,vultr服务商只计算单向的80M流量。如果是双向计算流量,那么会计算为160M流量。

7、如果你想把搭建的账号给多人使用,不用额外设置端口,因为一个账号就可以多人使用。一般10美元的服务器可以同时支持100人在线使用。

如果想实现支持每个用户(端口)不同的加密方式/协议/混淆等,并且管理流量使用,可以参考多用户配置脚本:wget -N –no-check-certificate https://softs.fun/Bash/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh 备用脚本:wget -N –no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh 安装后管理命令为:bash ssrmu.sh

注意:这个多用户配置脚本和教程内容的脚本无法共存!要想用这个脚本,把之前的脚本卸载,输入管理命令bash ssr.sh ,选择3,卸载ShadowsocksR即可卸载原脚本。

8、vultr服务器每月有流量限制,超过限制后服务器不会被停止运行,但是超出的流量会被额外收费。北美和西欧地区的服务器超出流量后,多出的部分收费为0.01美元/G。新加坡和日本东京(日本)为0.025美元/G,悉尼(澳大利亚)为0.05美元/G。把vultr服务器删掉,开通新的服务器,流量会从0开始重新计算。

9、vultr怎样才能申请退款呢?

vultr和其他的国外商家一样,都是使用工单的形式与客服联系,如果需要退款,直接在后台点击support,选择open ticket新开一个工单,选择billing question财务问题,简单的在文本框输入你的退款理由。比如:Please refund all the balance in my account。工单提交以后一般很快就可以给你确认退款,若干个工作日后就会退回你的支付方式。(全额退款结束后,账号可能会被删除)

如果英语水平不好,但是想和客服进行交流,可以用百度在线翻译,自动中文转英文和英文转中文。

10、路由器也可以配置ssr,关键的是路由器刷固件,华硕路由器刷梅林改版固件最简单,下载固件直接刷,梅林改版固件自带软件中心,然后再软件中心点离线安装就可以了(原版梅林不带软件中心 下载)。路由器刷merlin_8wan_firmware(八万)的固件就行KoolShare固件下载 其他的路由器也可以刷梅林。有问题或者对路由器配置ssr感兴趣的,可以在这些网站上自学:koolshare 华硕路由爱好者社区 NAP6

By柏小白

SHTML 教程

什么是 SHTML

使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。

SSI工作原理:

将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI 文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml。

Web 服务器在处理网页的同时处理 SSI 指令。当 Web 服务器遇到 SSI 指令时,直接将包含文件的内容插入 HTML 网页。如果“包含文件”中包含 SSI 指令,则同时插入此文件。除了用于包含文件的基本指令之外,还可以使用 SSI 指令插入文件的相关信息(如文件的大小)或者运行应用程序或 shell 命令。

网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。

所以,利用SHTML格式的页面目的和 ASP 差不多,但是因为是 API 所以运转速度更快,效率更高,比ASP快,比HTML慢,但由于可以使用服务器端包含,因此使页面更新容易(特别是批量更新banner,版权等),想象一下吧,你有一段 HTML,要在中间穿插一些特殊的服务端脚本,比如插入其他 HTML 段落,你选择 ASP 来完成这个任务,但是如果任务更繁重,需要更多的时间,比如 5 s,这个时候你不用 ASP 而用  SHTML,或许处理时间就只用 4s 了。

SSI有什么用?

之所以要扯到 SSI,是因爲 Shtml – Server-Parsed HTML 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。

目前,主要有以下几种用用途:

  1. 显示服务器端环境变量<#echo>
  2. 将文本内容直接插入到文档中<#include>
  3. 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
  4. 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
  5. 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)

高级SSI<XSSI>可设置变量使用if条件语句。

使用SSI

SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:

<!–#include file=”info.htm”–>

就是一条SSI指令,其作用是将”info.htm”的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。

如何在我的WEB服务器上配置SSI功能?

在一些WEB服务器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的文件必须使用已被映射到 SSI 解释程序的扩展名;否则,Web 服务器将不会处理该SSI指令;默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(Ssinc.dll)。
Apache则是根据你的设置情况而定,修改srm.conf如:

AddType text/x-server-parsed-html .shtml 将只对.shtml扩展名的文件解析SSI指令
AddType text/x-server-parsed-html .html 将对所有HTML文档解析SSI指令

Netscape WEB服务器直接使用 Administration Server(管理服务器)可打开SSI功能。
Website 使用 Server Admin 程序中的 Mapping 标签,扩展名添加内容类型为:wwwserver/html-ssi
Cern 服务器不支持SSI,可用SSI诈骗法,到 http://sw.cse.bris.ac.uk/WebTools/fakessi.html 上下载一个PERL脚本,即可使你的CERN服务器使用一些SSI指令。(不支持exec指令。)

SSI指令基本格式

程序代码:

<!– 指令名称=”指令参数”>

示例:

<!–#include file=”info.htm”–>

说明:

  1. <!– –>是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
  2. #include 为SSI指令之一。
  3. file 为include的参数, info.htm为参数值,在本指令中指将要包含的文档名。

注意:

  1. <!–与#号间无空格,只有SSI指令与参数间存在空格。
  2. 上面的标点=””,一个也不能少。
  3. SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

SSI指令使用详解

#echo 示范

作用:将环境变量插入到页面中。

语法:

<!–#echo var=”变量名称”–>

示例:

<!–#echo var=”DOCUMENT_NAME”–> 本文档名称
<!–#echo var=”DATE_LOCAL”–> 现在时间
<!–#echo var=”REMOTE_ADDR”–> 你的IP地址

#include 示范

作用:将文本文件的内容直接插入到文档页面中。

语法:

<!–#include file=”文件名称”–>
<!–#include virtual=”文件名称”–>

file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file=”nav_head.htm”。
virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file=”/hoyi/nav_head.htm”

参数:

file 指定包含文件相对于本文档的位置
virtual 指定相对于服务器文档根目录的位置

注意:

  1. 文件名称必须带有扩展名。
  2. 被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便,微软公司推荐使用 .inc 扩展名(这就看你的爱好了)。

示例:

<!–#include file=”nav_head.htm”–> 将头文件插入到当前页面
<!–#include file=”nav_foot.htm”–> 将尾文件插入到当前页面

#flastmod 和 #fsize 示范

作用:

#flastmod 文件最近更新日期
#fsize 文件的长度

语法:

<!–#flastmod file=”文件名称”–>
<!–#fsize file=”文件名称”–>

参数:

file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档
virtual 指定相对于服务器文档根目录的位置 如 /hoyi/info.txt 表示

注意:文件名称必须带有扩展名。

示例:

<!–#flastmod file=”news.htm”–> 将当前目录下news.htm文件的最近更新日期插插入到当前页面
<!–#fsize file=”news.htm”–> 将当前目录下news.htm的文件大小入到当前页面

#exec 示范

作用:将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。

语法:

<!–#exec cmd=”文件名称”–>
<!–#exec cgi=”文件名称”–>

参数:

cmd 常规应用程序
cgi CGI脚本程序

示例:

<!–#exec cmd=”cat /etc/passwd”–> 将会显示密码文件
<!–#exec cmd=”dir /b”–> 将会显示当前目录下文件列表
<!–#exec cgi=”/cgi-bin/gb.cgi”–> 将会执行CGI程序gb.cgi。
<!–#exec cgi=”/cgi-bin/access_log.cgi”–> 将会执行CGI程序access_log.cgi。

注意:从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。

禁止方法:

  1. Apache,将access.conf中的”Options Includes ExecCGI”这行代码删除;
  2. 在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元数据库;

#config

作用: 指定返回给客户端浏览器的错误信息、日期和文件大小的格式。

语法:

<!–#config errmsg=”自定义错误信息”–>
<!–#config sizefmt=”显示单位”–>
<!–#config timefmt=”显示格式”–>

参数:

errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。
sizefmt 文件大小显示方式,默认为字节方式(“bytes”)可以改为千字节方式(“abbrev”)
timefmt 时间显示方式,最灵活的配置属性。

示例:显示一个不存在文件的大小

<!–#config errmsg=”服务器执行错误,请联系管理员 yiho@126.com,谢谢!”–>
<!–#fsize file=”不存在的文件.htm”–>

以千字节方式显示文件大小

语法:

<!–#config sizefmt=”abbrev”–>
<!–#fsizefile=”news.htm”–>

以特定的时间格式显示时间

<!–#config timefmt=”%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期”–>
<!–#echo var=”DATE_LOCAL”–> 显示今天是星期几,几月,时区
<!–#config timefmt=”今天%A, %B ,服务器时区是 %z,是”–>
<!–#echo var=”DATE_LOCAL”–>

XSSI

XSSI(Extended SSI)是一组高级SSI指令,内置于Apache 1.2或更高版本的mod-include模块之中。其中可利用的的指令有:

#printenv
#set
#if

#printenv

作用: 显示当前存在于WEB服务器环境中的所有环境变量。

语法:

<!–#printenv–>

#set

作用:可给变量赋值,以用于后面的if语句。

语法:

<!–#set var=”变量名” value=”变量值”–>

示例:

<!–#set var=”color” value=”红色”–>

#if

作用:创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。

语法:

<!–#if expr=”$变量名=\”变量值A\””–>
显示内容
<!–#elif expr=”$变量名=\”变量值B\””–>
显示内容
<!–#else–>
显示内容
<!–#endif”–>

示例:

<!–#if expr=”$SERVER_NAME=\”www.baidu.com\””–>
欢迎光临 http://www.baidu.com
<!–#elif expr=”$SERVER_NAME=\”www.google.com\”” –>
欢迎光临 http://www.google.com
<!–#else–>
欢迎光临 Afly’s Blog!
<!–#endif”–>

注意:用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。

1、Config 命令

Config 命令主要用于修改SSI的默认设置。其中:

Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。

<!–#config errmsg=”Error! Please email webmaster@mydomain.com” –>

Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。

<!–#config timefmt=”%A, %B %d, %Y”–>
<!–#echo var=”LAST_MODIFIED” –>

显示结果为:

Wednesday, April 12, 2000

也许用户对上例中所使用的%A %B %d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。

Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为”bytes”;对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。

<!–#config sizefmt=”bytes” –>
<!–#fsize file=”index.html” –>

2、Include 命令

Include 命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!

Include 命令具有两个不同的参数:

Virtual:给出到服务器端某个文档的虚拟路径。
File:给出到当前目录的相对路径,其中不能使用”../”,也不能使用绝对路径。

<!–#include virtual=”/includes/header.html” –>
<!–#include file=”header.html” –> 这就要求每一个目录中都包含一个header.html文件。

3、Echo 命令

Echo 命令可以显示以下各环境变量:

DOCUMENT_NAME:显示当前文档的名称。
DOCUMENT_URI:显示当前文档的虚拟路径。例如:

<!–#echo var=”DOCUMENT_NAME” –>
<!–#echo var=”DOCUMENT_URI” –>

随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:

http://YourDomain<!–#echo var=”DOCUMENT_URI” –>

QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符”\”。例如:

<!–#echo var=”QUERY_STRING_UNESCAPED” –>

DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如:

<!–#config timefmt=”%A, the %d of %B, in the year %Y” –>
<!–#echo var=”DATE_LOCAL” –>

显示结果为:

Saturday, the 15 of April, in the year 2000

DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:

<!–#echo var=”DATE_GMT” –>

LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。

<!–#echo var=”LAST_MODIFIED” –>

CGI环境变量

除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:

SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:
<!–#echo var=”SERVER_SOFTWARE” –>
SERVER_NAME: 显示服务器的主机名称,DNS别名或IP地址。例如:
<!–#echo var=”SERVER_NAME” –>
SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:
<!–#echo var=”SERVER_PROTOCOL” –>
SERVER_PORT:显示服务器的响应端口。例如:
<!–#echo var=”SERVER_PORT” –>
REQUEST_METHOD:显示客户端的文档请求方法,包括GET, HEAD, 和POST。例如:
<!–#echo var=”REQUEST_METHOD” –>
REMOTE_HOST:显示发出请求信息的客户端主机名称。
<!–#echo var=”REMOTE_HOST” –>
REMOTE_ADDR:显示发出请求信息的客户端IP地址。
<!–#echo var=”REMOTE_ADDR” –>
AUTH_TYPE:显示用户身份的验证方法。
<!–#echo var=”AUTH_TYPE” –>
REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。
<!–#echo var=”REMOTE_USER” –>

4、Fsize:显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。

<!–#fsize file=”index_working.html” –>

5、Flastmod:显示指定文件的最后修改日期,可以结合config 命令的timefmt参数控制输出格式。

<!–#config timefmt=”%A, the %d of %B, in the year %Y” –>
<!–#flastmod file=”file.html” –>

这里,我们可以利用flastmod参数显示出一个页面上所有链接页面的更新日期。方法如下:

<!–#config timefmt=” %B %d, %Y” –>
<A HREF=”/directory/file.html”>File</A>
<!–#flastmod virtual=”/directory/file.html” –>
<A HREF=”/another_directory/another_file.html”>Another File</A>
<!–#flastmod virtual=”/another_directory/another_file.html” –>

显示结果为:

File April 19, 2000
Another File January 08, 2000

6、Exec

Exec命令可以执行CGI脚本或者shell命令。使用方法如下:

Cmd:使用/bin/sh执行指定的字串。如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。
Cgi:可以用来执行CGI脚本。例如,下面这个例子中使用服务端cgi-bin目录下的counter.pl脚本程序在每个页面放置一个计数器:

<!–#exec cgi=”/cgi-bin/counter.pl” –>

关于SHTML和HTML的区别

让我们先来看看SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml是服务器动态产成的html.

虽然两者都是超文本格式,但shtml是一种用于SSI技术的文件。也就是Server Side Include–SSI 服务器端包含指令。如果Web Server有SSI功能的话,大多数(尤其是基于Unix平台)的WEB服务器,如Netscape Enterprise Server等均支持SSI命令。

By柏小白

WebStorm设置shtml测试服务器-局域网内其他设备访问

一、WebStorm配置版本:
63001655-7A67-4e20-B5D3-85D86B9AA309
步骤:
1. “File” -> “Settings…”, 打开设置界面
2. 选中”Debugger”【调试程序】, Port输入”9090″, “Allow unsigned requests”选中, 打钩
2
3. 选中”Deployment”, 点击”+”, Name置为”Localhost”, Type选择为”Local or mounted folder”
3
4. 设置”Connection”, 设置Folder, 我自己的项目文件是在”E:\Work_V1_B\branch\dggschoo\04_Coding\WebSites\Dgg.Web.Static”下,  Web server root URL设置为”http://172.16.3.135:9090″, IP是自己电脑的
4
注:
Web server root URL: http://172.16.3.135:9090, 点击界面里的浏览器, 自动打开的地址如下:
http://172.16.3.135:9090/index.html
上面的地址是打不开的, 因为我是放在Dgg.Web.Static文件下的,
所以应修改成 Web server root URL: http://172.16.3.135:9090/Dgg.Web.Static
OK 能正常访问了
5
5. “Mappings”下保持不变, 点击”OK”, 即可
7

6. OK,设置完成,现在用webstorm直接页面预览,可以看到页面地址

已经由原先的:http://localhost:63342/****.html
更改为现在的:http://172.16.3.135:9090/****.html
直接复制这个路径给你的小伙伴吧,只要他们的设备和你的电脑保持在同局域网,即可打开预览了.

二、在nginx下配置:

nginx服务器,如何支持ssi包含文件。

主要是三个参数,ssi,ssi_silent_errors和ssi_types,均可以放在http,server和location的作用域下。

ssi on
开启ssi支持,默认是off

ssi_silent_errors on
默认值是off,开启后在处理SSI文件出错时不输出错误提示:”[an error occurred while processing the directive] ”

ssi_types
默认是ssi_types text/html,所以如果需要htm和html支持,则不需要设置这句,如果需要shtml支持,则需要设置:ssi_types text/shtml

SSI的格式:
<!–#include file=”bottom.htm”–>

<!–#include virtual=”/hx/bottom.htm”–>
路径是相对server中root根目录。

更多请参见官方文档:http://wiki.nginx.org/NginxChsHttpSsiModule

示例:

 

server {
    listen       1212;
    server_name  172.16.3.135;

    ssi on;
    ssi_silent_errors on;
    ssi_types text/shtml;

    root   "E:/Work_V1_B/branch/dggschoo/04_Coding/WebSites/Dgg.Web.Static/";

    location / {
        index  index.html index.htm index.shtml;
    }
}