<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>nolan (nolan)</title>
    <link>http://beta.w2solo.com/nolan</link>
    <description>免费通配符证书：ssl.spug.cc，免费监控：up.spug.cc，电话短信推送：push.spug.cc</description>
    <language>en-us</language>
    <item>
      <title>踩过坑后，我发现了这几个运维神器</title>
      <description>&lt;p&gt;作为一个工作了 8 年的运维开发，踩过的坑数不胜数。从半夜被 SSL 证书过期叫醒，到个人项目发不了短信验证码，再到网站挂了半天才发现...这些痛苦的经历让我不断寻找更好的解决方案。&lt;/p&gt;

&lt;p&gt;今天分享三个我在实际工作中发现的实用工具，希望能帮大家少踩一些坑。&lt;/p&gt;
&lt;h2 id="1. SSL证书管理：告别半夜被叫醒"&gt;1. SSL 证书管理：告别半夜被叫醒&lt;/h2&gt;&lt;h3 id="痛点回顾"&gt;痛点回顾&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;证书突然过期，用户无法访问网站&lt;/li&gt;
&lt;li&gt;手动续费太麻烦，经常忘记&lt;/li&gt;
&lt;li&gt;企业证书动辄几千块，个人项目用不起&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决方案：ssl.spug.cc"&gt;解决方案：&lt;a href="https://ssl.spug.cc" rel="nofollow" target="_blank" title=""&gt;ssl.spug.cc&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;价格优势明显&lt;/strong&gt;：单域名 39 元/年，比其他平台便宜 87%&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;自动化部署&lt;/strong&gt;：一键部署到阿里云 CDN、OSS、ALB 等&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;到期提醒&lt;/strong&gt;：支持微信、短信等多渠道提醒&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;免费通配符证书&lt;/strong&gt;：个人项目的福音&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实际体验：&lt;/strong&gt;
之前管理 10 个证书需要 1 小时手动更新，现在 3 分钟自动完成。最关键的是再也没有因为证书过期半夜被叫醒过。&lt;/p&gt;
&lt;h2 id="2. 短信验证码：个人项目也能用"&gt;2. 短信验证码：个人项目也能用&lt;/h2&gt;&lt;h3 id="痛点回顾"&gt;痛点回顾&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;个人开发者很难找到合适的短信服务&lt;/li&gt;
&lt;li&gt;传统平台注册流程复杂，门槛高&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决方案：push.spug.cc"&gt;解决方案：&lt;a href="https://push.spug.cc" rel="nofollow" target="_blank" title=""&gt;push.spug.cc&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;使用简单&lt;/strong&gt;：微信扫码注册即可使用&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;配置简单&lt;/strong&gt;：3 步完成配置，新手 10 分钟上手&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;按量付费&lt;/strong&gt;：没有最低消费门槛&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;多语言支持&lt;/strong&gt;：Python、JavaScript、cURL 等&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;代码示例：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://push.spug.cc/send/你的模板ID"&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'code'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'123456'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'targets'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'手机号'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;个人项目终于可以有短信验证码功能了，而且成本控制得很好。&lt;/p&gt;
&lt;h2 id="3. 电话通知：半夜服务器告警不再错过！"&gt;3. 电话通知：半夜服务器告警不再错过！&lt;/h2&gt;&lt;h3 id="痛点回顾"&gt;痛点回顾&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;半夜服务器宕机错过告警&lt;/li&gt;
&lt;li&gt;企业群消息太多容易错过，导致故障扩大&lt;/li&gt;
&lt;li&gt;需要电话通知，但找不到合适的方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决方案：push.spug.cc"&gt;解决方案：&lt;a href="https://push.spug.cc" rel="nofollow" target="_blank" title=""&gt;push.spug.cc&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;使用简单&lt;/strong&gt;：微信扫码注册即可使用&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;配置简单&lt;/strong&gt;：3 步完成配置，新手 10 分钟上手&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;按量付费&lt;/strong&gt;：没有最低消费门槛&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;多语言支持&lt;/strong&gt;：Python、JavaScript、cURL 等&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;代码示例：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://push.spug.cc/send/A27L&lt;span class="k"&gt;****&lt;/span&gt;bgEY &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"key1=Nginx服务异常&amp;amp;targets=186xxxx9898"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="4. 网站监控：免费且好用"&gt;4. 网站监控：免费且好用&lt;/h2&gt;&lt;h3 id="痛点回顾"&gt;痛点回顾&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;网站挂了不知道，用户投诉才发现&lt;/li&gt;
&lt;li&gt;免费监控功能有限，付费版本太贵&lt;/li&gt;
&lt;li&gt;部署监控系统太复杂&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="解决方案：up.spug.cc"&gt;解决方案：&lt;a href="https://up.spug.cc" rel="nofollow" target="_blank" title=""&gt;up.spug.cc&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;完全免费&lt;/strong&gt;：网站监控、TCP 监控、Ping 监控&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;多种监控类型&lt;/strong&gt;：支持 HTTP、域名、SSL 证书、端口监控&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;多渠道报警&lt;/strong&gt;：电话、短信、微信、钉钉、飞书等&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;免部署&lt;/strong&gt;：开箱即用，无需搭建&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;功能亮点：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSL 证书到期提醒&lt;/li&gt;
&lt;li&gt;域名到期监控&lt;/li&gt;
&lt;li&gt;网站可用性实时监控&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;现在网站有任何异常都能第一时间知道，再也不用担心服务悄悄挂掉了。&lt;/p&gt;
&lt;h2 id="我的使用建议"&gt;我的使用建议&lt;/h2&gt;&lt;h3 id="适用场景"&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;个人开发者&lt;/strong&gt;：这几个工具都支持个人使用，门槛低&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;小型团队&lt;/strong&gt;：成本控制好，功能够用&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;中小企业&lt;/strong&gt;：性价比高，可以替代昂贵的企业方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="实际成本对比"&gt;实际成本对比&lt;/h3&gt;&lt;table class="table table-bordered table-striped"&gt;
&lt;tr&gt;
&lt;th&gt;需求&lt;/th&gt;
&lt;th&gt;传统方案成本&lt;/th&gt;
&lt;th&gt;推荐方案成本&lt;/th&gt;
&lt;th&gt;节省&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSL 证书&lt;/td&gt;
&lt;td&gt;300-500 元/年&lt;/td&gt;
&lt;td&gt;39 元/年&lt;/td&gt;
&lt;td&gt;87%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;短信验证码&lt;/td&gt;
&lt;td&gt;企业认证 + 高门槛&lt;/td&gt;
&lt;td&gt;按量付费&lt;/td&gt;
&lt;td&gt;大幅降低&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;电话通知&lt;/td&gt;
&lt;td&gt;企业认证 + 高门槛&lt;/td&gt;
&lt;td&gt;按量付费&lt;/td&gt;
&lt;td&gt;大幅降低&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;网站监控&lt;/td&gt;
&lt;td&gt;几百到几千/年&lt;/td&gt;
&lt;td&gt;免费&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;h2 id="写在最后"&gt;写在最后&lt;/h2&gt;
&lt;p&gt;这几个工具我用了一年多，确实解决了不少实际问题。特别是对个人开发者和小团队来说，能大幅降低成本和技术门槛。&lt;/p&gt;

&lt;p&gt;当然，工具选择因人而异，适合自己的才是最好的。如果你也有类似的痛点，不妨试试看。&lt;/p&gt;</description>
      <author>nolan</author>
      <pubDate>Tue, 22 Jul 2025 07:07:33 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/6024</link>
      <guid>http://beta.w2solo.com/topics/6024</guid>
    </item>
    <item>
      <title>个人开发者如何发送短信？这个方案太香了！</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;还在为无法发送短信验证码而烦恼？今天分享一个超实用的解决方案，个人开发者也能用！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;最近国内很多平台暂停了针对个人用户的短信发送，这给个人开发者带来了不少困扰。不过别担心，一个超实用的解决方案——Spug 推送平台，它能很好地满足我们发送短信验证码等需求。&lt;/p&gt;
&lt;h2 id="为什么选择这个方案？"&gt;为什么选择这个方案？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;无需企业认证&lt;/strong&gt;：个人开发者直接可用&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;新用户福利&lt;/strong&gt;：注册即送测试短信&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;价格实惠&lt;/strong&gt;：0.05 元/条，按量计费&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;接口简单&lt;/strong&gt;：几行代码就能搞定&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;支持丰富&lt;/strong&gt;：短信、电话、微信、企业微信、飞书、钉钉、邮件等&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三步搞定短信发送"&gt;三步搞定短信发送&lt;/h2&gt;&lt;h3 id="第一步：注册账户"&gt;第一步：注册账户&lt;/h3&gt;
&lt;p&gt;打开&lt;a href="https://push.spug.cc" rel="nofollow" target="_blank" title=""&gt;push.spug.cc&lt;/a&gt;，使用微信扫码直接登录，无需繁琐的认证流程。&lt;/p&gt;
&lt;h3 id="第二步：创建模板"&gt;第二步：创建模板&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;点击"消息模板" → "新建"&lt;/li&gt;
&lt;li&gt;输入模版名称&lt;/li&gt;
&lt;li&gt;选择推送通道&lt;/li&gt;
&lt;li&gt;选择短信验证码模板&lt;/li&gt;
&lt;li&gt;选择推送对象&lt;/li&gt;
&lt;li&gt;保存模板&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="第三步：发送验证码"&gt;第三步：发送验证码&lt;/h3&gt;
&lt;p&gt;复制模版 ID，通过 API 调用即可发送短信验证码。&lt;/p&gt;
&lt;h2 id="代码示例（多种语言）"&gt;代码示例（多种语言）&lt;/h2&gt;&lt;h3 id="Python版（推荐）"&gt;Python 版（推荐）&lt;/h3&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_sms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;template_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"https://push.spug.cc/send/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;template_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s"&gt;"targets"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# 使用示例
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;send_sms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"abc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"6677"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"151xxxx0875"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="Go版"&gt;Go 版&lt;/h3&gt;&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"net/http"&lt;/span&gt;
    &lt;span class="s"&gt;"io/ioutil"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;sendSMS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;templateID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://push.spug.cc/send/%s?code=%s&amp;amp;targets=%s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="n"&gt;templateID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;ioutil&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;sendSMS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"abc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"6677"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"151xxxx0875"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Error:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="Java版"&gt;Java 版&lt;/h3&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.net.URL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.BufferedReader&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.InputStreamReader&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SMSSender&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;sendSMS&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;templateId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://push.spug.cc/send/%s?code=%s&amp;amp;targets=%s"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;templateId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="no"&gt;URL&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="no"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;HttpURLConnection&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;openConnection&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setRequestMethod&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"GET"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;BufferedReader&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;BufferedReader&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;InputStreamReader&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;con&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInputStream&lt;/span&gt;&lt;span class="o"&gt;()));&lt;/span&gt;
        &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;inputLine&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nc"&gt;StringBuilder&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StringBuilder&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;inputLine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;readLine&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inputLine&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;in&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;close&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sendSMS&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"abc"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"6677"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"151xxxx0875"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;printStackTrace&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="使用技巧"&gt;使用技巧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;参数说明&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;code&lt;/code&gt;：验证码内容&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;targets&lt;/code&gt;：接收短信的手机号&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;targets&lt;/code&gt;参数会覆盖模板配置的手机号&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;最佳实践&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;选择合适的短信模板&lt;/li&gt;
&lt;li&gt;验证手机号格式&lt;/li&gt;
&lt;li&gt;管理验证码有效期&lt;/li&gt;
&lt;li&gt;添加错误处理&lt;/li&gt;
&lt;li&gt;确保账户余额充足&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>nolan</author>
      <pubDate>Fri, 25 Apr 2025 05:55:50 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/5728</link>
      <guid>http://beta.w2solo.com/topics/5728</guid>
    </item>
    <item>
      <title>亲测好用！解决国内短信受限的办法分享</title>
      <description>&lt;p&gt;最近国内很多平台暂停了针对个人用户的短信发送，着实给不少人带来了困扰。不过别担心，分享一个超实用的解决方案——Spug 推送平台，它能很好地满足我们发送短信验证码等需求。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img7@main/2025/04/14/1744630802674-9ba74768-d3ee-45c7-9178-4a741d63ab5d.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="Spug平台发送短信步骤"&gt;Spug 平台发送短信步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;注册账户&lt;/strong&gt;：打开&lt;a href="https://push.spug.cc" rel="nofollow" target="_blank" title=""&gt;push.spug.cc&lt;/a&gt;，使用微信扫码就可以直接登录&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;创建模板&lt;/strong&gt;：点击消息模板 / 新建 / 输入模版名称，选择推送通道 / 选择短信验证码模板 / 选择推送对象 / 保存&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;发送验证码&lt;/strong&gt;：点击模板的 [复制 URL]，直接 curl 调用就可以发短信验证码&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img18@main/2025/04/14/1744631147859-f279cc1a-6da1-46e5-8e9b-18063ce8b011.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://fastly.jsdelivr.net/gh/bucketio/img0@main/2025/04/14/1744631178328-5d7ef8ed-acaf-4a9b-ab79-5acb3544f954.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="利用Spug发送短信验证码示例"&gt;利用 Spug 发送短信验证码示例&lt;/h2&gt;
&lt;p&gt;假设你已经在 Spug 平台创建好了短信验证码模板，现在要给用户发送验证码。通过 bash 命令调用接口，就像这样：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# xxx是你创建的短信验证码模板id，151xxxx0875是接收短信的用户手机号&lt;/span&gt;
curl https://push.spug.cc/send/xxx?code&lt;span class="o"&gt;=&lt;/span&gt;6677&amp;amp;targets&lt;span class="o"&gt;=&lt;/span&gt;151xxxx0875
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;参数解释：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;code&lt;/code&gt;参数传递的是具体的验证码内容&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;targets&lt;/code&gt;参数则指定了接收短信的用户手机号，通过这种方式，能快速将验证码精准地发送到目标用户手机上。&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;当使用了 targets 参数时传入的手机号会覆盖模板里面配置的手机号，消息模板中配置的短信和语音推送对象将会自动失效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="注意事项"&gt;注意事项&lt;/h2&gt;
&lt;p&gt;使用 Spug 平台发送短信时，务必严格遵守平台的使用规则以及相关法律法规，避免违规操作带来不必要的麻烦。 &lt;/p&gt;

&lt;p&gt;在如今短信权限受限的大环境下，Spug 推送平台真的是个人用户的福音。大家不妨动手试试，说不定能轻松解决你在短信发送方面遇到的难题。&lt;/p&gt;</description>
      <author>nolan</author>
      <pubDate>Tue, 15 Apr 2025 10:41:00 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/5684</link>
      <guid>http://beta.w2solo.com/topics/5684</guid>
    </item>
    <item>
      <title>轻量级开源自动化运维平台，批量执行、在线终端、发布部署一应俱全</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/openspug/spug" rel="nofollow" target="_blank" title=""&gt;Spug&lt;/a&gt; 是专为中小型企业设计的轻量级、无 Agent 的自动化运维平台。它整合了主机管理、批量执行、应用部署、监控、报警等核心功能，它以开源的方式，为企业提供了一个全面、高效的运维解决方案。&lt;/p&gt;
&lt;h2 id="主要功能亮点："&gt;主要功能亮点：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;批量执行&lt;/strong&gt;：在线批量执行主机命令，简化操作&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;在线终端&lt;/strong&gt;：通过浏览器直接登录主机终端&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;文件管理&lt;/strong&gt;：支持文件在线上传、下载&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;任务计划&lt;/strong&gt;：灵活的在线任务调度和计划&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;发布部署&lt;/strong&gt;：自定义发布部署流程&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;配置中心&lt;/strong&gt;：支持多种格式的配置管理（KV、文本、JSON 等）&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;监控报警&lt;/strong&gt;：支持站点、端口、进程等多维度监控，集成短信、邮件、钉钉、微信等报警方式&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="技术亮点"&gt;技术亮点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;优雅美观&lt;/strong&gt;：基于 Ant Design 的 UI 界面，提供良好的用户体验。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;开源免费&lt;/strong&gt;：前后端代码完全开源，自由使用和修改。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;开源地址：&lt;a href="https://github.com/openspug/spug" rel="nofollow" target="_blank" title=""&gt;https://github.com/openspug/spug&lt;/a&gt;&lt;/p&gt;</description>
      <author>nolan</author>
      <pubDate>Tue, 10 Sep 2024 10:33:42 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/5015</link>
      <guid>http://beta.w2solo.com/topics/5015</guid>
    </item>
    <item>
      <title>一个简单 API，一键实现多通道消息推送</title>
      <description>&lt;p&gt;&lt;strong&gt;Spug 推送助手&lt;/strong&gt; 是一个强大的多通道消息推送平台，支持电话、短信、邮件、飞书、钉钉、微信、企业微信等多种推送方式。只需一个简单的 API 调用，即可实现消息的快速分发。&lt;/p&gt;
&lt;h3 id="如何使用？"&gt;如何使用？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用推送助手非常简单，一个&lt;code&gt;curl&lt;/code&gt;命令即可搞定：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://push.spug.cc/send/LQjEKrl?code&lt;span class="o"&gt;=&lt;/span&gt;688522
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;也可以使用 Python 脚本：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python
import requests
requests.get('https://push.spug.cc/send/LQj4Krl?code=688522')
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;最终收到的推送消息&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;您的验证码是688522，十分钟内有效，如非本人操作请忽略。&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="适用场景"&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;监控系统报警：如：&lt;a href="https://mp.weixin.qq.com/s/8hwavBRwjxhXqVPyuN3-Jw" rel="nofollow" target="_blank" title=""&gt;zabbix 电话报警&lt;/a&gt;、&lt;a href="https://mp.weixin.qq.com/s/3PbkRp3OfqFYe0y5BNnrfQ" rel="nofollow" target="_blank" title=""&gt;prometheus 电话报警&lt;/a&gt;、&lt;a href="https://mp.weixin.qq.com/s/1Deb1CCGEUvU6rbqbV2SPg" rel="nofollow" target="_blank" title=""&gt;夜莺电话报警&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;业务通知：适用于需要电话或者短信通知的各种业务场景&lt;/li&gt;
&lt;li&gt;登录验证：业务需要短信验证码登录的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="推送地址：push.spug.cc"&gt;推送地址：&lt;a href="https://push.spug.cc" rel="nofollow" target="_blank" title=""&gt;push.spug.cc&lt;/a&gt;
&lt;/h3&gt;</description>
      <author>nolan</author>
      <pubDate>Thu, 05 Sep 2024 14:11:21 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/5003</link>
      <guid>http://beta.w2solo.com/topics/5003</guid>
    </item>
    <item>
      <title>推荐大家一个超实用的免费通配符 SSL 证书平台</title>
      <description>&lt;p&gt;平台可以免费申请通配符证书，而且 OV、DV 证书全网最低价，性价比爆棚！&lt;/p&gt;
&lt;h3 id="平台特点："&gt;平台特点：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;支持免费申请通配符证书&lt;/li&gt;
&lt;li&gt;阿里云、腾讯云也能买&lt;/li&gt;
&lt;li&gt;可以开发票，支持 7 天无理由退款&lt;/li&gt;
&lt;li&gt;平台提供证书一键下载&lt;/li&gt;
&lt;li&gt;平台支持证书过期自动化监控报警功能&lt;/li&gt;
&lt;li&gt;支持一键部署到主流云平台，&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;免费申请：&lt;/strong&gt; &lt;a href="https://ssl.spug.cc/" rel="nofollow" target="_blank" title=""&gt;https://ssl.spug.cc&lt;/a&gt;&lt;/p&gt;</description>
      <author>nolan</author>
      <pubDate>Wed, 04 Sep 2024 10:56:49 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/4998</link>
      <guid>http://beta.w2solo.com/topics/4998</guid>
    </item>
    <item>
      <title>推荐一款免费好用的网站监控工具</title>
      <description>&lt;h3 id="简介："&gt;简介：&lt;/h3&gt;
&lt;p&gt;Spug 监控助手：免部署、简单好用、开箱即用的网站监控工具，支持网站监控、TCP 监控、Ping 监控，报警消息支持电话、短信、微信、钉钉、飞书、邮件等多渠道通知，完全免费！&lt;/p&gt;
&lt;h3 id="网站地址：https://up.spug.cc"&gt;网站地址：&lt;a href="https://up.spug.cc" rel="nofollow" target="_blank" title=""&gt;https://up.spug.cc&lt;/a&gt;
&lt;/h3&gt;&lt;h3 id="主要功能："&gt;主要功能：&lt;/h3&gt;
&lt;p&gt;• 网站监控： 实时监控网站可用性，及时发现异常。
• 域名监控： 监控网站域名到期时间，避免因域名过期导致的网站不可访问。
• SSL 证书监控： 监控 SSL 证书有效性，提前提醒证书更新。
• TCP 端口监控： 全面监控端口连接状态，确保数据传输的稳定性
• Ping 监控： 通过 Ping 监控，及时发现并解决网络延迟和丢包问题，提高网络的稳定性和可靠性。&lt;/p&gt;
&lt;h3 id="功能预览："&gt;功能预览：&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://cdn.spug.cc/blog/monitor/spug-monitor-6.png" title="" alt=""&gt;
&lt;img src="https://cdn.spug.cc/blog/monitor/spug-monitor-3.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="网站地址：https://up.spug.cc"&gt;网站地址：&lt;a href="https://up.spug.cc" rel="nofollow" target="_blank" title=""&gt;https://up.spug.cc&lt;/a&gt;
&lt;/h3&gt;</description>
      <author>nolan</author>
      <pubDate>Tue, 03 Sep 2024 08:57:37 +0800</pubDate>
      <link>http://beta.w2solo.com/topics/4993</link>
      <guid>http://beta.w2solo.com/topics/4993</guid>
    </item>
  </channel>
</rss>
