😘今天喝了雪碧,吃了维生素b可还是忘不了你个傻碧。

😝今天喝了脉动啊,割了动脉啊,然后一动不动了。

🤞今天喝了脉动啊,吃了果冻啊,还是忍不住对你心动啊。

🎭歪不是吧今天看了智慧树哇吃了麦丽素哇但是还是忍不住把中指对你竖啊.


This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC

This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC
This is my website, click the button JerryC

JerryC JerryC JerryC JerryC JerryC JerryC JerryC JerryC JerryC JerryC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,,outline %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,larger %}


This is my website, click the button {% btn 'http://www.jerryc.me',JerryC %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,,outline %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline %}
This is my website, click the button {% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,larger %}



{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,block %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,block center larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,block right outline larger %}


{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,blue larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,pink larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,red larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,purple larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,orange larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,green larger %}


<div class="btn-center">
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline blue larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline pink larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline red larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline purple larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline orange larger %}
{% btn 'http://www.jerryc.me',JerryC,far fa-hand-point-right,outline green larger %}
</div>
  1. 你好!
  2. 看什么看
  3. 我很帅吗!!!
1
2
3
4
5
<ol>
<li>你好!</li>
<li>看什么看</li>
<li>我很帅吗!!!</li>
</ol>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// 你要镜像的网站.
const upstream = 'www.google.com'

// 镜像网站的目录,比如你想镜像某个网站的二级目录则填写二级目录的目录名,镜像 google 用不到,默认即可.
const upstream_path = '/'

// 镜像站是否有手机访问专用网址,没有则填一样的.
const upstream_mobile = 'www.google.com'

// 屏蔽国家和地区.
const blocked_region = ['KP', 'SY', 'PK', 'CU']

// 屏蔽 IP 地址.
const blocked_ip_address = ['0.0.0.0', '127.0.0.1']

// 镜像站是否开启 HTTPS.
const https = true

// 文本替换.
const replace_dict = {
'$upstream': '$custom_domain',
'//google.com': ''
}

// 以下保持默认,不要动
addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request));
})

async function fetchAndApply(request) {

const region = request.headers.get('cf-ipcountry').toUpperCase();
const ip_address = request.headers.get('cf-connecting-ip');
const user_agent = request.headers.get('user-agent');

let response = null;
let url = new URL(request.url);
let url_hostname = url.hostname;

if (https == true) {
url.protocol = 'https:';
} else {
url.protocol = 'http:';
}

if (await device_status(user_agent)) {
var upstream_domain = upstream;
} else {
var upstream_domain = upstream_mobile;
}

url.host = upstream_domain;
if (url.pathname == '/') {
url.pathname = upstream_path;
} else {
url.pathname = upstream_path + url.pathname;
}

if (blocked_region.includes(region)) {
response = new Response('Access denied: WorkersProxy is not available in your region yet.', {
status: 403
});
} else if (blocked_ip_address.includes(ip_address)) {
response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {
status: 403
});
} else {
let method = request.method;
let request_headers = request.headers;
let new_request_headers = new Headers(request_headers);

new_request_headers.set('Host', url.hostname);
new_request_headers.set('Referer', url.hostname);

let original_response = await fetch(url.href, {
method: method,
headers: new_request_headers
})

let original_response_clone = original_response.clone();
let original_text = null;
let response_headers = original_response.headers;
let new_response_headers = new Headers(response_headers);
let status = original_response.status;

new_response_headers.set('access-control-allow-origin', '*');
new_response_headers.set('access-control-allow-credentials', true);
new_response_headers.delete('content-security-policy');
new_response_headers.delete('content-security-policy-report-only');
new_response_headers.delete('clear-site-data');

const content_type = new_response_headers.get('content-type');
if (content_type.includes('text/html') && content_type.includes('UTF-8')) {
original_text =
await replace_response_text(original_response_clone, upstream_domain, url_hostname);
} else {
original_text = original_response_clone.body
}

response = new Response(original_text, {
status,
headers: new_response_headers
})
}
return response;
}

async function replace_response_text(response, upstream_domain, host_name) {
let text = await response.text()

var i, j;
for (i in replace_dict) {
j = replace_dict[i]
if (i == '$upstream') {
i = upstream_domain
} else if (i == '$custom_domain') {
i = host_name
}

if (j == '$upstream') {
j = upstream_domain
} else if (j == '$custom_domain') {
j = host_name
}

let re = new RegExp(i, 'g')
text = text.replace(re, j);
}
return text;
}


async function device_status(user_agent_info) {
var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < agents.length; v++) {
if (user_agent_info.indexOf(agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}

Heroku 免费容器服务申请,搭建 V2+CF 方法教程

Heroku 是一个支持多种编程语言的云平台即服务,并且提供免费的容器服务(美国、欧洲节点),本文就以免费容器为例,搭建 V2 并配置 CF 加速,你懂得!
注意:Heroku 有滥用危险,后果可能就是封禁账号哦!

一、配置Heroku
1、首先注册Heroku账号,点击通过 https://dashboard.heroku.com 注册一个账号,注册时候不能使用QQ邮箱:
2、注册成功以后登录,登录以后点击 我我我我 部署应用!名称随便填写就行了,然后点击 Deploy app 系统会自动部署:

3、部署完成以后,点击 Settings 再点击 Reveal Config Vars 就可以看见 UUID了!记下自己的UUID等会还是用到:
4、接着下滑,看见Domains项后有个域名!https://*****.herokuapp.com/ 记下域名,稍后配置CloudFlare 反向代理会用到:

二、配置CloudFlare反向代理
1、首先登陆CloudFlare官网,然后点击 右侧的 Workers :
2、接着点击创建 Workers :

3、接着复制下方代码,并添加进去!注意把下面的中文替换成你之前在Domains项看见的那个域名前缀:

1
2
3
4
5
6
7
8
9
10
addEventListener(
"fetch",event => {
let url=new URL(event.request.url);
url.hostname="你的heroku域名.herokuapp.com";
let request=new Request(url,event.request);
event. respondWith(
fetch(request)
)
}
)

至此!CF就配置完成了,接下来开始配置V2客户端!

三、配置V2客户端
1、配置客户端,请按照图片的要求设置,否则不能联网:

四、自选IP
下载自选IP程序,然后windows系统运行即可,全自动化。

点我下载

4、实际效果图(稳定 3 -5W)

使用自己的 Live2d 看板娘

每次看别人博客或者网站的时候,别人网站都有好看的看板娘,即使安装了 helper-live2d 但提供的 Live2d 太少了
那么如何使用自定义的 Live2d 呢?
看网上很多教程都是乱七八糟的,看也看不懂,自己研究了一下,成功了!
分享出来,让更多人少踩坑,这里我以紫罗兰永恒花园的薇尔莉特·伊芙加登小姐姐的 Live2d 模型作为演示,结束后会奉上几个好看的模型
如果你有好看的模型可以与我分享 (好东西要学会分享)

使用 helper-live2d 的 Live2d 插件 https://github.com/EYHN/hexo-helper-live2d

1
npm install --save hexo-helper-live2d

安装成功后,在 hexo 根目录的_config.yml 添加如下配置 (可以写在主题配置文件里)

基础配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Live2D
## https://github.com/EYHN/hexo-helper-live2d
live2d:
enable: true # 开启live2d
# enable: false
scriptFrom: local # 默认
pluginRootPath: live2d/ # 插件在站点上的根目录(相对路径)
pluginJsPath: lib/ # 脚本文件相对与插件根目录路径
pluginModelPath: assets/ # 模型文件相对与插件根目录路径
# scriptFrom: jsdelivr # jsdelivr CDN
# scriptFrom: unpkg # unpkg CDN
# scriptFrom: https://cdn.jsdelivr.net/npm/live2d-widget@3.x/lib/L2Dwidget.min.js # 你的自定义 url
tagMode: false # 标签模式, 是否仅替换 live2d tag标签而非插入到所有页面中
debug: false # 调试, 是否在控制台输出日志
model:
use: live2d-widget-model-wanko # npm-module package name
# use: wanko # 博客根目录/live2d_models/ 下的目录名
# use: ./wives/wanko # 相对于博客根目录的路径
# use: https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json # 你的自定义 url

进阶配置
看如下配置在基础配置的基础上进行添加相应的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
live2d:
enable: true # 是否开启live2d
scriptFrom: local ## 脚本从本地引入
pluginRootPath: live2dw/ # 模型根目录(指hexo g后生成public\live2dw文件名)
pluginJsPath: lib/ # 依赖js的文件夹名(public\live2dw\lib)
pluginModelPath: assets/ # 模型存放目录(public\live2dw\assets)
tagMode: false # 标记模式(未知)
log: false # 日志
model: # 模型
use: live2d-widget-model-wanko # 使用的模型名称
display: # 显示
position: right # 显示在右边(left显示在左边)
width: 150 # 宽度
height: 300 # 高度
mobile:
show: true # 手机端是否显示
react:
opacity: 0.7 # 透明度

下面是我在基础配置的基础上添加的几个属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Live2D
## https://github.com/EYHN/hexo-helper-live2d
live2d:
enable: true # 开启live2d
# enable: false
scriptFrom: local # 默认
pluginRootPath: live2d/ # 插件在站点上的根目录(相对路径)
pluginJsPath: lib/ # 脚本文件相对与插件根目录路径
pluginModelPath: assets/ # 模型文件相对与插件根目录路径
# scriptFrom: jsdelivr # jsdelivr CDN
# scriptFrom: unpkg # unpkg CDN
# scriptFrom: https://cdn.jsdelivr.net/npm/live2d-widget@3.x/lib/L2Dwidget.min.js # 你的自定义 url
tagMode: false # 标签模式, 是否仅替换 live2d tag标签而非插入到所有页面中
debug: false # 调试, 是否在控制台输出日志
display:
position: left
mobile:
show: false
model:
scale: 1.2
use: weier

高级配置
建议小白可以不必理会,高玩请随意,官方 API 地址:L2Dwidget | live2d-widget.js

使用模型
自定义模型
使用自己下载好的模型
在 hexo 根目录新建 live2d_models 文件夹,然后把模型放进去,最后在 live2d 配置里的 model: 下的 use: 输入模型文件夹名
在我提供的 live2d 的压缩包里有几个模型,这里我以薇尔莉特·伊芙加登进行演示

将薇尔莉特·伊芙加登复制到刚从新建的 live2d_models 文件夹内,然后重命名为 weier(当然这个名字是你自定义的),然后进入 weier 文件夹,里面有个 14.json 文件,将他重命名为 weier.model.json 其他文件无需修改,最后在 live2d 配置里的 model: 下的 use: 输入模型文件夹名 (weier)

1
2
model:
use: weier

使用 npm install {packagename} 安装模型如下

1
npm install live2d-widget-model-wanko

目前有如下模型模型样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
live2d-widget-model-chitose
live2d-widget-model-epsilon2_1
live2d-widget-model-gf
live2d-widget-model-haru/01 (use npm install --save live2d-widget-model-haru)
live2d-widget-model-haru/02 (use npm install --save live2d-widget-model-haru)
live2d-widget-model-haruto
live2d-widget-model-hibiki
live2d-widget-model-hijiki
live2d-widget-model-izumi
live2d-widget-model-koharu
live2d-widget-model-miku
live2d-widget-model-ni-j
live2d-widget-model-nico
live2d-widget-model-nietzsche
live2d-widget-model-nipsilon
live2d-widget-model-nito
live2d-widget-model-shizuku
live2d-widget-model-tororo
live2d-widget-model-tsumiki
live2d-widget-model-unitychan
live2d-widget-model-wanko
live2d-widget-model-z16

模型下载地址