-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
234 lines (223 loc) · 41.5 KB
/
search.xml
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Hello World</title>
<url>/posts/4a17b156.html</url>
<content><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<a id="more"></a>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/deployment.html">Deployment</a></p>
]]></content>
</entry>
<entry>
<title>免流服务端配置备忘</title>
<url>/posts/4e89c614.html</url>
<content><![CDATA[<h1 id="V2ray免流服务端配置备忘"><a href="#V2ray免流服务端配置备忘" class="headerlink" title="V2ray免流服务端配置备忘"></a>V2ray免流服务端配置备忘</h1><p>感谢伟大的项目<a href="https://www.v2fly.org/">Project V</a>。<br><img src="https://www.v2fly.org/v2ray.png" alt="v2flay"></p>
<a id="more"></a>
<figure class="highlight json"><table><tr><td class="code"><pre><span class="line">{</span><br><span class="line"> <span class="attr">"log"</span>: {</span><br><span class="line"> <span class="attr">"loglevel"</span>: <span class="string">"warning"</span></span><br><span class="line"> },</span><br><span class="line"> <span class="attr">"inbound"</span>: {</span><br><span class="line"> <span class="attr">"protocol"</span>: <span class="string">"vmess"</span>,</span><br><span class="line"> <span class="attr">"port"</span>: <span class="number">443</span>,</span><br><span class="line"> <span class="attr">"settings"</span>: {</span><br><span class="line"> <span class="attr">"clients"</span>: [{</span><br><span class="line"> <span class="attr">"id"</span>: <span class="string">"替换uuid"</span>,</span><br><span class="line"> <span class="attr">"alterId"</span>: <span class="number">16</span>,</span><br><span class="line"> <span class="attr">"security"</span>: <span class="string">"aes-128-gcm"</span></span><br><span class="line"> }]</span><br><span class="line"> },</span><br><span class="line"> <span class="attr">"streamSettings"</span>: {</span><br><span class="line"> <span class="attr">"network"</span>: <span class="string">"tcp"</span>,</span><br><span class="line"> <span class="attr">"tcpSettings"</span>: {</span><br><span class="line"> <span class="attr">"header"</span>: {</span><br><span class="line"> <span class="attr">"Host"</span>: [<span class="string">"免流host"</span>],</span><br><span class="line"> <span class="attr">"type"</span>: <span class="string">"http"</span>,</span><br><span class="line"> <span class="attr">"response"</span>: {</span><br><span class="line"> <span class="attr">"version"</span>: <span class="string">"1.1"</span>,</span><br><span class="line"> <span class="attr">"status"</span>: <span class="string">"200"</span>,</span><br><span class="line"> <span class="attr">"reason"</span>: <span class="string">"OK"</span>,</span><br><span class="line"> <span class="attr">"headers"</span>: {</span><br><span class="line"> <span class="attr">"Content-Type"</span>: [<span class="string">"application/octet-stream"</span>,</span><br><span class="line"> <span class="string">"application/x-msdownload"</span>,</span><br><span class="line"> <span class="string">"text/html"</span>,</span><br><span class="line"> <span class="string">"application/x-shockwave-flash"</span>],</span><br><span class="line"> <span class="attr">"Transfer-Encoding"</span>: [<span class="string">"chunked"</span>],</span><br><span class="line"> <span class="attr">"Connection"</span>: [<span class="string">"keep-alive"</span>],</span><br><span class="line"> <span class="attr">"Pragma"</span>: <span class="string">"no-cache"</span></span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> },</span><br><span class="line"> <span class="attr">"inboundDetour"</span>: [],</span><br><span class="line"> <span class="attr">"outbound"</span>: {</span><br><span class="line"> <span class="attr">"protocol"</span>: <span class="string">"freedom"</span>,</span><br><span class="line"> <span class="attr">"settings"</span>: {}</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>随笔</category>
</categories>
<tags>
<tag>免流</tag>
</tags>
</entry>
<entry>
<title>hexo部署后是空白页</title>
<url>/posts/ef3aa99.html</url>
<content><![CDATA[<h2 id="大坑"><a href="#大坑" class="headerlink" title="大坑"></a>大坑</h2><p>今天在工作本上重新部署了一下hexo,本地测试都正常,deploy到github上,结果,<strong>变成空白页了!!!</strong>炸裂!<br>停更很长时间,我以为是Github改规则了,翻遍了pages的说明文档也没有发现有违规的用法。又是重新部署又是改设置,主题都换了,还是不行。不死心,晚上回家在手机上用termux又试了一遍,本地和pages都正常。</p>
<a id="more"></a>
<p>什么情况!仔细检查了public文件夹,我发现电脑上的index.html居然0kb!重新生成了几次都一样,而手机上的是正常大小。<br>两个设备nodejs版本不一样!电脑是v15,手机是v12,我把手机上升级到v14,重新npm install,问题重现</p>
<h2 id="避坑指南"><a href="#避坑指南" class="headerlink" title="避坑指南"></a>避坑指南</h2><p>虽然从安装模块到最后部署都不报错,甚至本地网页都是正常的,但是deploy之后生成的public文件有问题!所以,部署hexo不要装太高版本的nodejs!over.</p>
]]></content>
<categories>
<category>hexo</category>
</categories>
<tags>
<tag>hexo</tag>
<tag>nodejs</tag>
</tags>
</entry>
<entry>
<title>python爬虫实战(一)——利用BeautifulSoup爬取糗事百科</title>
<url>/posts/62e166ab.html</url>
<content><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p><a href="http://coolapk.com/">酷安</a>有个不错的安卓APP叫<a href="http://www.coolapk.com/apk/small.word">一句</a>,可以以桌面插件的形式显示名人名言、诗词歌赋之类的,支持自定义文本。作为一个俗人,看到这个功能我虎躯一震,何不让它显示<a href="http://www.qiushibaike.com/">糗百</a>呢?没事的时候可以看一看,图个乐。学习python也有一段时间了,正好可以练练手。<br>这是我写的第一个爬虫程序,写完一共也没花多少时间,把脚本共享出来,大家共同学习,欢迎指正。</p>
<h1 id="准备"><a href="#准备" class="headerlink" title="准备"></a>准备</h1><ul>
<li>python版本:<strong>python3</strong></li>
<li>第三方库:<code>requests</code>, <code>BeautifulSoup</code>, <code>lxml(可选)</code></li>
</ul>
<a id="more"></a>
<h1 id="开始"><a href="#开始" class="headerlink" title="开始"></a>开始</h1><h2 id="网址分析"><a href="#网址分析" class="headerlink" title="网址分析"></a>网址分析</h2><p>糗百热门的首页地址为<code>http://www.qiushibaike.com/hot/</code>,第二页为<code>http://www.qiushibaike.com/hot/page/2/</code>,后面的都是这个格式。尝试<code>http://www.qiushibaike.com/hot/page/1/</code>,正常加载为首页,不出所料,这下就确定了网址格式。</p>
<h2 id="网页内容分析"><a href="#网页内容分析" class="headerlink" title="网页内容分析"></a>网页内容分析</h2><p>糗事大体分两种,带图片的和纯文字的,我们需要的是后者。查看网页源码可以发现,每条糗事都被包含在类似<code><div class="article block untagged mb15" id='qiushi_tag_118899109'></code>这种标签内,例如下面这条糗事:</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"article block untagged mb15"</span> <span class="attr">id</span>=<span class="string">'qiushi_tag_118899109'</span>></span></span><br><span class="line">......</span><br><span class="line"><span class="tag"><<span class="name">a</span> <span class="attr">href</span>=<span class="string">"/article/118899109"</span> <span class="attr">target</span>=<span class="string">"_blank"</span> <span class="attr">class</span>=<span class="string">'contentHerf'</span> ></span><span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"content"</span>></span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">span</span>></span>杨姐,感谢你为国人讲述了西游记。美猴王、猪八戒、蜘蛛精等等,早已经融入了我的生活,后来拍的西游记,都无法和你相比!!给您点赞!!您走好!!<span class="tag"></<span class="name">span</span>></span></span><br><span class="line"></span><br><span class="line"><span class="tag"></<span class="name">div</span>></span><span class="tag"></<span class="name">a</span>></span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"thumb"</span>></span></span><br><span class="line"><span class="tag"><<span class="name">a</span> <span class="attr">href</span>=<span class="string">"/article/118899109"</span> <span class="attr">target</span>=<span class="string">"_blank"</span>></span><span class="tag"><<span class="name">img</span> <span class="attr">src</span>=<span class="string">"//pic.qiushibaike.com/system/pictures/11889/118899109/medium/app118899109.jpg"</span> <span class="attr">alt</span>=<span class="string">"美猴王、猪八戒、蜘蛛精等等"</span> /></span><span class="tag"></<span class="name">a</span>></span></span><br><span class="line"><span class="tag"></<span class="name">div</span>></span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">class</span>=<span class="string">"stats"</span>></span><span class="tag"><<span class="name">span</span> <span class="attr">class</span>=<span class="string">"stats-vote"</span>></span><span class="tag"><<span class="name">i</span> <span class="attr">class</span>=<span class="string">"number"</span>></span>1976<span class="tag"></<span class="name">i</span>></span> 好笑<span class="tag"></<span class="name">span</span>></span><span class="tag"><<span class="name">span</span> <span class="attr">class</span>=<span class="string">"stats-comments"</span>></span></span><br><span class="line">......</span><br></pre></td></tr></table></figure>
<p><code><span></code>标签内的文本正是我们需要的内容。<br>通过分析其他糗事还可以知道,带图片的糗事,例如上面这条,多一个<code><div class="thumb"></code>标签,纯文本的没有。那么我们找到<code><a href="/article/118899109" target="_blank" class='contentHerf'</code>之后,判断它下一个标签是不是<code><div class="thumb"></code>就可以排除图片糗事了。逻辑大概就是这样,比较简单,直接上代码了。如果你有效率更高的办法,欢迎提出来共同学习一下。</p>
<h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="comment">#!/usr/bin/python3</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">from</span> bs4 <span class="keyword">import</span> BeautifulSoup</span><br><span class="line"><span class="keyword">from</span> time <span class="keyword">import</span> sleep</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_qb</span>(<span class="params">page_num</span>):</span></span><br><span class="line"> <span class="string">'''</span></span><br><span class="line"><span class="string"> 功能:获取糗事百科热门页面纯文字糗事</span></span><br><span class="line"><span class="string"> 参数:page_num为需要获取的页数</span></span><br><span class="line"><span class="string"> 返回值:list_qs 存放糗事的列表</span></span><br><span class="line"><span class="string"> '''</span></span><br><span class="line"> list_qs = [] <span class="comment"># 存放糗事列表</span></span><br><span class="line"> url = <span class="string">'http://www.qiushibaike.com/hot'</span> <span class="comment"># 糗百热门基础网址</span></span><br><span class="line"> <span class="keyword">for</span> page <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, page_num + <span class="number">1</span>):</span><br><span class="line"> cnt = <span class="number">0</span></span><br><span class="line"> qbhot = <span class="string">'{0}/page/{1}'</span>.<span class="built_in">format</span>(url, <span class="built_in">str</span>(page))</span><br><span class="line"> print(<span class="string">'开始获取第{0}页糗事...'</span>.<span class="built_in">format</span>(page), end=<span class="string">' '</span>)</span><br><span class="line"> r = requests.get(qbhot)</span><br><span class="line"> soup = BeautifulSoup(r.text, <span class="string">'lxml'</span>)</span><br><span class="line"> <span class="keyword">for</span> tag <span class="keyword">in</span> soup.find_all(<span class="string">'a'</span>, class_=<span class="string">'contentHerf'</span>):</span><br><span class="line"> <span class="comment"># 注意:tag.next_sibling是一个'\n'</span></span><br><span class="line"> <span class="keyword">if</span> tag.next_sibling.next_sibling[<span class="string">'class'</span>] != [<span class="string">'thumb'</span>]:</span><br><span class="line"> list_qs.append(tag.div.span.get_text())</span><br><span class="line"> cnt += <span class="number">1</span></span><br><span class="line"> print(<span class="string">'{0}条'</span>.<span class="built_in">format</span>(cnt))</span><br><span class="line"> <span class="keyword">if</span> page % <span class="number">4</span> <span class="keyword">is</span> <span class="number">0</span>:</span><br><span class="line"> sleep(<span class="number">0.5</span>)</span><br><span class="line"> <span class="keyword">return</span> list_qs</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">main</span>():</span></span><br><span class="line"> page_num = <span class="number">10</span> <span class="comment"># 想要获取的页数</span></span><br><span class="line"> file_qb = <span class="string">'qiubai.txt'</span> <span class="comment"># 用于保存爬取回来的数据</span></span><br><span class="line"></span><br><span class="line"> ls_qs = get_qb(page_num)</span><br><span class="line"> <span class="keyword">with</span> <span class="built_in">open</span>(file_qb, <span class="string">'w'</span>) <span class="keyword">as</span> f:</span><br><span class="line"> f.write(<span class="string">'\n'</span>.join(ls_qs)) <span class="comment"># 每条糗事保存一行</span></span><br><span class="line"></span><br><span class="line"> print(<span class="string">'Done'</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> main()</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>python</category>
</categories>
<tags>
<tag>python</tag>
<tag>BeautifulSoup</tag>
<tag>爬虫</tag>
</tags>
</entry>
<entry>
<title>python第三方库lxml安装笔记</title>
<url>/posts/18113d03.html</url>
<content><![CDATA[<p>2017.10.23更新:<br>原来<a href="https://github.com/termux/termux-packages/issues/218">issues #218</a>早就有提到。<br>安装依赖:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">apt install clang libxml2-dev libxslt-dev python-dev</span><br></pre></td></tr></table></figure>
<hr>
<p>前段时间折腾<code>termux</code>,想装个lxml库,怎么都装不上,各种报错。无奈借助大谷歌,发现了这篇文章–<a href="http://m.blog.csdn.net/article/details?id=43758179">Python中lxml模块的安装</a>,很是受用。现在把关键部分转过来,做个笔记,忘了可以随时查看。</p>
<blockquote>
<p><strong>lxml依赖库:</strong><br> libxml2, libxml2-devel, libxlst, libxlst-devel, python-libxml2, python-libxslt</p>
</blockquote>
<a id="more"></a>
<h1 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h1><hr>
<p>本文安装环境:安卓app–<strong>termux</strong><br>其他系统自行修改安装命令。</p>
<h2 id="第一步:安装libxml2"><a href="#第一步:安装libxml2" class="headerlink" title="第一步:安装libxml2"></a>第一步:安装libxml2</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">apt install libxml2 libxml2-dev</span><br></pre></td></tr></table></figure>
<h2 id="第二步:安装libxslt"><a href="#第二步:安装libxslt" class="headerlink" title="第二步:安装libxslt"></a>第二步:安装libxslt</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">apt install libxslt libxslt-dev</span><br></pre></td></tr></table></figure>
<h2 id="第三步:安装python-libxml2-python-libxslt"><a href="#第三步:安装python-libxml2-python-libxslt" class="headerlink" title="第三步:安装python-libxml2 python-libxslt"></a>第三步:安装python-libxml2 python-libxslt</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">apt install python-libxml2 python-libxslt</span><br></pre></td></tr></table></figure>
<h2 id="第四步:安装lxml"><a href="#第四步:安装lxml" class="headerlink" title="第四步:安装lxml"></a>第四步:安装lxml</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">pip install lxml</span><br></pre></td></tr></table></figure>
<p>执行完以上步骤,手机终于可以借助termux这个神器愉快的爬网页了。</p>
<p>参考:<br><a href="http://m.blog.csdn.net/article/details?id=43758179">http://m.blog.csdn.net/article/details?id=43758179</a></p>
]]></content>
<categories>
<category>随笔</category>
</categories>
<tags>
<tag>python</tag>
<tag>lxml</tag>
<tag>termux</tag>
</tags>
</entry>
<entry>
<title>在Hexo文章中添加Read More标签</title>
<url>/posts/5148ac91.html</url>
<content><![CDATA[<h2 id="开始"><a href="#开始" class="headerlink" title="开始"></a>开始</h2><p>非常简单,只需要在文章中需要的位置添加下面一行<code>HTML</code>注释就可以了。</p>
<figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="comment"><!--more--></span></span><br></pre></td></tr></table></figure>
<p>这行注释后面的内容都将被截断,简单,方便,好用。</p>
]]></content>
<categories>
<category>随笔</category>
</categories>
<tags>
<tag>hexo</tag>
</tags>
</entry>
<entry>
<title>强制apt使用IPv4或IPv6</title>
<url>/posts/c963d817.html</url>
<content><![CDATA[<p>今天有个朋友新入的vps遇到不能使用apt,看了下是系统走IPv6总是连不上,按照以下方法解决,我记录下来,以备不时之需。<br>此方法适用于<code>debian</code>与<code>ubuntu</code>。</p>
<hr>
<p>如果只是临时使用,只需要像这样执行一条命令:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">apt -o Acquire::ForceIPv4=<span class="literal">true</span> update</span><br></pre></td></tr></table></figure>
<p>如果想要默认以后都走IPv4的话,需要在<code>/etc/apt/apt.conf.d</code>文件夹下,创建一个<code>99force-ipv4</code>的文件</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">vim /etc/apt/apt.conf.d/99force-ipv4</span><br></pre></td></tr></table></figure>
<p>并填入以下内容即可:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">Acquire::ForceIPv4 <span class="string">"true"</span>;</span><br></pre></td></tr></table></figure>
<p>如果想要强制IPv6,道理一样的。</p>
]]></content>
<categories>
<category>随笔</category>
</categories>
<tags>
<tag>apt</tag>
<tag>ipv4</tag>
<tag>ubuntu</tag>
</tags>
</entry>
<entry>
<title>梅林固件安装ssr服务端笔记</title>
<url>/posts/e17553cc.html</url>
<content><![CDATA[<p>刚入了个网件r6400,第一时间就刷成了梅林7.4,功能强大好用。但是有个小遗憾,插件中心没有ssr服务端(有什么用,ml你懂的),于是扫论坛,发现有人成功安装运行了。本着折腾的态度,别人可以,我也可以,开始了安装之路。</p>
<a id="more"></a>
<h1 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h1><p>路由开启SSH访问,在<code>系统管理-系统设置</code>里。<br>U盘,最好格式化成ext3/ext4格式,插到路由器上。</p>
<h1 id="第一步,安装Entware"><a href="#第一步,安装Entware" class="headerlink" title="第一步,安装Entware"></a>第一步,安装Entware</h1><p>Entware-ng的wiki中已经告知,新版梅林固件已经集成一键安装脚本,所以这一步很简单。SSH登录到路由之后直接运行<code>entware-setup.sh</code>即可,会有提示输入<code>1</code>选择你的U盘,之后就是等,如果网络好的话,很快,两三分钟。<br>完成之后执行一遍</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">opkg update</span><br><span class="line">opkg upgrade</span><br></pre></td></tr></table></figure>
<h1 id="安装环境依赖"><a href="#安装环境依赖" class="headerlink" title="安装环境依赖"></a>安装环境依赖</h1><p>根据<a href="https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup">ShadowsocksR 服务端安装教程</a>,<code>git</code>、<code>python</code>肯定是必须的,直接执行</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">opkg install git</span><br><span class="line">opkg install python</span><br></pre></td></tr></table></figure>
<p>论坛中还提到需要安装<code>libopenssl</code>库,但我在我路由器执行<code>opkg install libopenssl</code>之后提示已经是最新,所以这一步应该可以省略。</p>
<h1 id="安装配置SSR"><a href="#安装配置SSR" class="headerlink" title="安装配置SSR"></a>安装配置SSR</h1><h2 id="获取源代码"><a href="#获取源代码" class="headerlink" title="获取源代码"></a>获取源代码</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git <span class="built_in">clone</span> -b manyuser git://github.com/shadowsocksr/shadowsocksr.git</span><br></pre></td></tr></table></figure>
<p>这里需要注意,SSR标准教程是<code>git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git</code>,我这里通不过,提示https啥啥啥,鼓捣了一会儿没搞明白,所以把https换成了git,一次通过。</p>
<h2 id="服务端配置"><a href="#服务端配置" class="headerlink" title="服务端配置"></a>服务端配置</h2><p>完全按照ssr官方教程来配就可以,这里就不写了。有一个地方重点说明,在<code>~/shadowsocksr/shadowsocks/crypto/util.py</code>源码中,找到</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"> for name in lib_names:</span><br><span class="line"> patterns = [</span><br><span class="line"> '/usr/local/lib*/lib%s.*' % name,</span><br><span class="line"> '/usr/lib*/lib%s.*' % name,</span><br><span class="line"> 'lib%s.*' % name,</span><br><span class="line"> '%s.dll' % name]</span><br></pre></td></tr></table></figure>
<p>将<code>'/usr/lib*/lib%s.*' % name</code>改为<code>'/opt/lib*/lib%s.*' % name</code>,不然服务端跑不起来。改完以后的文件应该是这样的</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"> for name in lib_names:</span><br><span class="line"> patterns = [</span><br><span class="line"> '/usr/local/lib*/lib%s.*' % name,</span><br><span class="line"> '/opt/lib*/lib%s.*' % name,</span><br><span class="line"> 'lib%s.*' % name,</span><br><span class="line"> '%s.dll' % name]</span><br></pre></td></tr></table></figure>
<p>运行子目录中的<code>server.py</code>,如果看到监听信息,恭喜你,成功了。</p>
<h2 id="设置iptables"><a href="#设置iptables" class="headerlink" title="设置iptables"></a>设置iptables</h2><p>想从外网访问需要设置iptables,开放你的ssr服务端口</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT</span><br><span class="line">iptables -I INPUT -p udp --dport 端口号 -j ACCEPT</span><br></pre></td></tr></table></figure>
<p>至此,ssr服务端已基本可以跑了,开机自动运行脚本正在试,待我这里跑顺畅了再来更新。至于内网穿透,由于我这里是公网IP,只做了域名绑定,所以还是自行谷歌吧,方法很多,常见的是ngrok。如果你有更合理的建议,欢迎留言,共同探讨。</p>
<h1 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h1><p><a href="http://koolshare.cn/">http://koolshare.cn</a><br><a href="https://github.com/Entware-ng/Entware-ng">https://github.com/Entware-ng/Entware-ng</a><br><a href="https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup">https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup</a></p>
]]></content>
<categories>
<category>随笔</category>
</categories>
<tags>
<tag>ssr</tag>
<tag>梅林</tag>
<tag>entware</tag>
</tags>
</entry>
<entry>
<title>OMV配置避坑</title>
<url>/posts/c6dfb919.html</url>
<content><![CDATA[<p>omv折腾笔记</p>
<h2 id="关于’sharedfolders’"><a href="#关于’sharedfolders’" class="headerlink" title="关于’sharedfolders’"></a>关于’sharedfolders’</h2><p>最近把omv升级到了5.5.14,总体来说很顺利。需要注意的是<code>sharedfolders</code>被默认关闭了,想要打开需要自己修改配置。<br>官方说明:<a href="https://github.com/openmediavault/openmediavault/commit/ce86619414c70c62847c2d24144c41d57ed4a5d8">https://github.com/openmediavault/openmediavault/commit/ce86619414c70c62847c2d24144c41d57ed4a5d8</a></p>
<a id="more"></a>
<p>可以自己修改配置打开此功能,编辑<code>/etc/default/openmediavault</code>,将<code>OMV_SHAREDFOLDERS_DIR_ENABLED="NO"</code>改为<code>YES</code>,然后运行</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">omv-salt stage run prepare</span><br><span class="line">omv-salt deploy run systemd</span><br></pre></td></tr></table></figure>
<p>熟悉的共享文件夹又回来了。不过我后来又把它关闭了,因为开着它,在有docker服务的情况下,添加共享文件夹的时候会发生错误。</p>
<h2 id="无法删除已经不存在的硬盘"><a href="#无法删除已经不存在的硬盘" class="headerlink" title="无法删除已经不存在的硬盘"></a>无法删除已经不存在的硬盘</h2><p>如果硬盘没有从系统里卸载而直接拔除 ,文件系统里会一直有这个丢失的硬盘,而且日志也会报错,无法直接从webui里删除掉,看着很不爽。这时候只能进配置文件手动删除它了。<br>编辑<code>/etc/openmediavault/config.xml</code>,将有关此硬盘的字段全都删除掉,特别要注意上下文的相关行,删错了xml会报错。然后执行:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">omv-salt deploy run fstab</span><br><span class="line">omv-salt deploy run hdparm</span><br><span class="line">omv-salt deploy run monit</span><br></pre></td></tr></table></figure>
<p>刷新网页就可以了。</p>
<h2 id="omv5相关源都换为国内源"><a href="#omv5相关源都换为国内源" class="headerlink" title="omv5相关源都换为国内源"></a>omv5相关源都换为国内源</h2><p>废话不多说,直接贴文件了。</p>
<h3 id="etc-apt-source-list"><a href="#etc-apt-source-list" class="headerlink" title="/etc/apt/source.list"></a>/etc/apt/source.list</h3><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">deb http://mirrors.aliyun.com/debian/ buster main</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian/ buster main</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free</span><br><span class="line"></span><br><span class="line"># buster-updates, previously known as 'volatile'</span><br><span class="line">deb http://mirrors.aliyun.com/debian/ buster-updates main contrib non-free</span><br><span class="line">deb-src http://mirrors.aliyun.com/debian/ buster-updates main contrib non-free</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h3 id="etc-apt-sources-list-d-omvextras-list"><a href="#etc-apt-sources-list-d-omvextras-list" class="headerlink" title="/etc/apt/sources.list.d/omvextras.list"></a>/etc/apt/sources.list.d/omvextras.list</h3><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul buster main</span><br><span class="line">deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable</span><br><span class="line">deb http://linux.teamviewer.com/deb stable main</span><br><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul-testing buster main</span><br><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul-extras buster main</span><br></pre></td></tr></table></figure>
<h3 id="etc-apt-sources-list-d-openmediavault-kernel-backports-list"><a href="#etc-apt-sources-list-d-openmediavault-kernel-backports-list" class="headerlink" title="/etc/apt/sources.list.d/openmediavault-kernel-backports.list"></a>/etc/apt/sources.list.d/openmediavault-kernel-backports.list</h3><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">#deb https://deb.debian.org/debian buster-backports main contrib non-free</span><br><span class="line">deb http://mirrors.aliyun.com/debian buster-backports main contrib non-free</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h3 id="etc-apt-sources-list-d-openmediavault-list"><a href="#etc-apt-sources-list-d-openmediavault-list" class="headerlink" title="/etc/apt/sources.list.d/openmediavault.list"></a>/etc/apt/sources.list.d/openmediavault.list</h3><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># deb https://packages.openmediavault.org/public usul main</span><br><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul main</span><br><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul-proposed main</span><br><span class="line">deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul partner</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>改完之后apt update,速度立马上去了。</p>
]]></content>
<categories>
<category>omv</category>
</categories>
<tags>
<tag>omv</tag>
<tag>openmediavault</tag>
</tags>
</entry>
<entry>
<title>解决谷歌搜索频繁人机验证问题</title>
<url>/posts/b3700fdf.html</url>
<content><![CDATA[<p>前几天入手的小鸡IP段在谷歌黑名单里,谷歌搜索的时候频繁出现“reCAPTCHA”人机验证,太烦了。找客服换ip还要花银子,而且重新给的IP有可能还是会这样。昨天抽空解决了一下,效果很满意,今天写下关键步骤,分享、备忘。以下步骤建立在ubuntu20.04上,其他系统自行变通。</p>
<a id="more"></a>
<h2 id="准备-IPv6"><a href="#准备-IPv6" class="headerlink" title="准备 IPv6"></a>准备 IPv6</h2><p>服务器编辑<code>/etc/sysctl.conf</code>,确保以下三个配置都为0,启用ipv6。</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">net.ipv6.conf.all.disable_ipv6 = 0</span><br><span class="line">net.ipv6.conf.default.disable_ipv6 = 0</span><br><span class="line">net.ipv6.conf.lo.disable_ipv6 = 0</span><br></pre></td></tr></table></figure>
<p>然后执行<code>sysctl -p</code>使配置生效。<br>接下来确认一下VPS商家有没有提供ipv6,如果有就去申请一个ipv6地址。如果没有,就自己注册<a href="https://tunnelbroker.net/">tunnelbroker</a>,申请一个IPv6隧道,具体步骤谷歌一下吧,很简单。<br>执行<code>ping6 www.google.com</code>,正常情况下能ping通,说明设置正确,记录下返回的地址。</p>
<h2 id="配置hosts"><a href="#配置hosts" class="headerlink" title="配置hosts"></a>配置hosts</h2><p>将上一步得到的google的地址填入<code>/etc/hosts</code>文件中,也可以自己搜索一些谷歌其他的ipv6地址填入。</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">2404:6800:8005::68 www.google.com</span><br></pre></td></tr></table></figure>
<p>访问<a href="https://www.google.com/sorry/index">https://www.google.com/sorry/index</a>,如果显示的是ipv6的地址,那么人机验证的问题基本已经解决了。试着搜索几次,确实不会再弹人机验证页面。<br>但是,后遗症来了,访问其他网站变慢了,为什么?因为我用的是tunnelbroker的隧道,开启ipv6以后,默认流量全部都走ipv6隧道中转一下,速度当然上不去,接下来再解决这个问题。(原生ipv6地址的应该不会有此问题,也就没必要看下一步了。)</p>
<h2 id="IPv4优先"><a href="#IPv4优先" class="headerlink" title="IPv4优先"></a>IPv4优先</h2><p>很简单,只需要修改<code>/etc/gai.conf</code>,将里面的</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">precedence ::ffff:0:0/96 100</span><br></pre></td></tr></table></figure>
<p>这一行取消注释即可,具体原理见参考链接。<br>验证一下,执行<code>wget -SO /dev/null weixin.qq.com</code></p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># wget -SO /dev/null weixin.qq.com</span><br><span class="line">URL transformed to HTTPS due to an HSTS policy</span><br><span class="line">--2020-11-12 20:59:25-- https://weixin.qq.com/</span><br><span class="line">Resolving weixin.qq.com (weixin.qq.com)... 203.205.254.110, 203.205.235.205, 240e:e1:a900:50::3a, ...</span><br><span class="line">Connecting to weixin.qq.com (weixin.qq.com)|203.205.254.110|:443... connected.</span><br><span class="line">HTTP request sent, awaiting response...</span><br><span class="line"> HTTP/1.1 200 OK</span><br><span class="line"> Content-Type: text/html; charset=utf-8</span><br><span class="line"> Cache-Control: no-cache, must-revalidate</span><br><span class="line"> Connection: keep-alive</span><br><span class="line"> Strict-Transport-Security: max-age=31536000</span><br><span class="line"> Content-Length: 10336</span><br><span class="line">Length: 10336 (10K) [text/html]</span><br><span class="line">Saving to: ‘/dev/null’</span><br><span class="line"></span><br><span class="line">/dev/null 0% 0 --.-KB/s /dev/null 100% 10.09K --.-KB/s in 0s </span><br><span class="line"></span><br><span class="line">2020-11-12 20:59:25 (246 MB/s) - ‘/dev/null’ saved [10336/10336]</span><br></pre></td></tr></table></figure>
<p>可以看到weixin.qq.com解析出了ipv4和ipv6地址,连接的是ipv4地址,用同样的方法也可以看出google.com连接的是ipv6地址。大功告成。</p>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>出现人机验证的原因是ip地址被加入黑名单了,我们最终措施是更换ip。更换ipv4地址或启用ipv6地址都可以解决此问题,只不过前者可能需要花银子,后者可能需要花时间😂。</p>
<h3 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h3><p><a href="https://blog.51cto.com/welcomeweb/2464836">https://blog.51cto.com/welcomeweb/2464836</a></p>
]]></content>
<categories>
<category>VPS</category>
</categories>
<tags>
<tag>reCAPTCHA</tag>
<tag>v2ray</tag>
</tags>
</entry>
</search>