×

分享到微信

请使用微信扫描二维码

或点击右上角菜单选择"分享到朋友圈"

一行代码推送手机通知

免费 实时 跨平台 保护隐私
虾推啥 - 一行代码推送手机通知服务展示

使用场景

量化交易

服务器运维

网络爬虫

游戏脚本外挂

使用方法

  1. 关注:微信扫一扫下面的二维码,关注我们的公众号
    虾推啥微信公众号二维码 - 关注获取推送token
  2. 复制:关注后自动收到token并复制保存
  3. 推送:发送http请求,推送到微信
    复制如下文本
    https://wx.xtuis.cn/ABCDEFG.send?text=黄金大涨&desp=黄金大涨100元

    粘贴到网页浏览器的地址栏里,并用您的token替换其中的ABCDEFG,回车,即可收到微信通知。

    虾推啥HTTP请求推送示例 - 浏览器地址栏使用方法
    或者使用常用语言推送:
    GET 示例

    下方示例基于同一个 GET 请求思路(将参数编码后拼到 URL)。请把 您的token 替换成你自己的 token。

    curl -G 'https://wx.xtuis.cn/您的token.send' \
      --data-urlencode 'text=黄金大涨' \
      --data-urlencode 'desp=黄金大涨100元'
    import requests
    
    params = {
        "text": "黄金大涨",
        "desp": "黄金大涨100元",
    }
    
    response = requests.get(
        "https://wx.xtuis.cn/您的token.send",
        params=params,
        timeout=10,
    )
    
    print(response.text)
    const params = new URLSearchParams({
      text: "黄金大涨",
      desp: "黄金大涨100元",
    });
    
    fetch(`https://wx.xtuis.cn/您的token.send?${params.toString()}`)
      .then((res) => res.text())
      .then((text) => console.log(text));
    const axios = require("axios");
    
    axios
      .get("https://wx.xtuis.cn/您的token.send", {
        params: {
          text: "黄金大涨",
          desp: "黄金大涨100元",
        },
        timeout: 10000,
      })
      .then(({ data }) => console.log(data))
      .catch((err) => console.error(err.message));
    package main
    
    import (
        "fmt"
        "io"
        "net/http"
        "net/url"
    )
    
    func main() {
        params := url.Values{}
        params.Set("text", "黄金大涨")
        params.Set("desp", "黄金大涨100元")
    
        endpoint := "https://wx.xtuis.cn/您的token.send?" + params.Encode()
        resp, err := http.Get(endpoint)
        if err != nil {
            panic(err)
        }
        defer resp.Body.Close()
    
        body, _ := io.ReadAll(resp.Body)
        fmt.Println(string(body))
    }
    <?php
    $query = http_build_query([
        'text' => '黄金大涨',
        'desp' => '黄金大涨100元',
    ]);
    
    $url = 'https://wx.xtuis.cn/您的token.send?' . $query;
    $result = file_get_contents($url);
    
    echo $result;
    import java.net.URI;
    import java.net.URLEncoder;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.nio.charset.StandardCharsets;
    
    HttpClient client = HttpClient.newHttpClient();
    String query = "text=" + URLEncoder.encode("黄金大涨", StandardCharsets.UTF_8)
        + "&desp=" + URLEncoder.encode("黄金大涨100元", StandardCharsets.UTF_8);
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://wx.xtuis.cn/您的token.send?" + query))
        .GET()
        .build();
    
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.body());
    using System;
    using System.Net.Http;
    using System.Threading.Tasks;
    
    using var client = new HttpClient();
    
    var query = $"text={Uri.EscapeDataString("黄金大涨")}&desp={Uri.EscapeDataString("黄金大涨100元")}";
    var url = $"https://wx.xtuis.cn/您的token.send?{query}";
    
    var result = await client.GetStringAsync(url);
    Console.WriteLine(result);
    require "uri"
    require "net/http"
    
    uri = URI("https://wx.xtuis.cn/您的token.send")
    uri.query = URI.encode_www_form(
      text: "黄金大涨",
      desp: "黄金大涨100元"
    )
    
    response = Net::HTTP.get_response(uri)
    puts response.body
    use reqwest::blocking::Client;
    use reqwest::Url;
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let mut url = Url::parse("https://wx.xtuis.cn/您的token.send")?;
        url.query_pairs_mut()
            .append_pair("text", "黄金大涨")
            .append_pair("desp", "黄金大涨100元");
    
        let body = Client::new().get(url).send()?.text()?;
        println!("{body}");
        Ok(())
    }
    import java.net.URI
    import java.net.URLEncoder
    import java.net.http.HttpClient
    import java.net.http.HttpRequest
    import java.net.http.HttpResponse
    import java.nio.charset.StandardCharsets
    
    fun main() {
        val query = "text=" + URLEncoder.encode("黄金大涨", StandardCharsets.UTF_8) +
            "&desp=" + URLEncoder.encode("黄金大涨100元", StandardCharsets.UTF_8)
    
        val request = HttpRequest.newBuilder()
            .uri(URI.create("https://wx.xtuis.cn/您的token.send?$query"))
            .GET()
            .build()
    
        val response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString())
        println(response.body())
    }
    $text = [uri]::EscapeDataString("黄金大涨")
    $desp = [uri]::EscapeDataString("黄金大涨100元")
    
    $url = "https://wx.xtuis.cn/您的token.send?text=$text&desp=$desp"
    $result = Invoke-RestMethod -Method Get -Uri $url
    
    $result
    推送支持POST方法,推送内容最大支持64KB大小的文字。以下是常用语言 POST 示例:
    POST 示例

    POST 示例默认发送 application/x-www-form-urlencoded,字段名为 textdesp

    curl 'https://wx.xtuis.cn/您的token.send' \
      --data-urlencode 'text=你的标题' \
      --data-urlencode 'desp=最大支持64KB的文字内容'
    import requests
    
    payload = {
        "text": "你的标题",
        "desp": "最大支持64KB的文字内容",
    }
    
    response = requests.post(
        "https://wx.xtuis.cn/您的token.send",
        data=payload,
        timeout=10,
    )
    
    print(response.text)
    const body = new URLSearchParams({
      text: "你的标题",
      desp: "最大支持64KB的文字内容",
    });
    
    fetch("https://wx.xtuis.cn/您的token.send", {
      method: "POST",
      headers: {
        "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
      },
      body,
    })
      .then((res) => res.text())
      .then((text) => console.log(text));
    const axios = require("axios");
    
    const form = new URLSearchParams({
      text: "你的标题",
      desp: "最大支持64KB的文字内容",
    });
    
    axios
      .post("https://wx.xtuis.cn/您的token.send", form, {
        headers: {
          "Content-Type": "application/x-www-form-urlencoded",
        },
        timeout: 10000,
      })
      .then(({ data }) => console.log(data))
      .catch((err) => console.error(err.message));
    package main
    
    import (
        "fmt"
        "io"
        "net/http"
        "net/url"
    )
    
    func main() {
        form := url.Values{}
        form.Set("text", "你的标题")
        form.Set("desp", "最大支持64KB的文字内容")
    
        resp, err := http.PostForm("https://wx.xtuis.cn/您的token.send", form)
        if err != nil {
            panic(err)
        }
        defer resp.Body.Close()
    
        body, _ := io.ReadAll(resp.Body)
        fmt.Println(string(body))
    }
    <?php
    $payload = http_build_query([
        'text' => '你的标题',
        'desp' => '最大支持64KB的文字内容',
    ]);
    
    $opts = [
        'http' => [
            'method'  => 'POST',
            'header'  => "Content-Type: application/x-www-form-urlencoded\r\n",
            'content' => $payload,
        ],
    ];
    
    $context = stream_context_create($opts);
    $result = file_get_contents('https://wx.xtuis.cn/您的token.send', false, $context);
    
    echo $result;
    import java.net.URI;
    import java.net.URLEncoder;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.nio.charset.StandardCharsets;
    
    HttpClient client = HttpClient.newHttpClient();
    String form = "text=" + URLEncoder.encode("你的标题", StandardCharsets.UTF_8)
        + "&desp=" + URLEncoder.encode("最大支持64KB的文字内容", StandardCharsets.UTF_8);
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://wx.xtuis.cn/您的token.send"))
        .header("Content-Type", "application/x-www-form-urlencoded")
        .POST(HttpRequest.BodyPublishers.ofString(form))
        .build();
    
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.body());
    using System;
    using System.Collections.Generic;
    using System.Net.Http;
    using System.Threading.Tasks;
    
    using var client = new HttpClient();
    
    var form = new FormUrlEncodedContent(new Dictionary<string, string>
    {
        ["text"] = "你的标题",
        ["desp"] = "最大支持64KB的文字内容",
    });
    
    var response = await client.PostAsync("https://wx.xtuis.cn/您的token.send", form);
    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result);
    require "uri"
    require "net/http"
    
    uri = URI("https://wx.xtuis.cn/您的token.send")
    response = Net::HTTP.post_form(uri, {
      "text" => "你的标题",
      "desp" => "最大支持64KB的文字内容"
    })
    
    puts response.body
    use reqwest::blocking::Client;
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let body = Client::new()
            .post("https://wx.xtuis.cn/您的token.send")
            .form(&[
                ("text", "你的标题"),
                ("desp", "最大支持64KB的文字内容"),
            ])
            .send()?
            .text()?;
    
        println!("{body}");
        Ok(())
    }
    import java.net.URI
    import java.net.URLEncoder
    import java.net.http.HttpClient
    import java.net.http.HttpRequest
    import java.net.http.HttpResponse
    import java.nio.charset.StandardCharsets
    
    fun main() {
        val form = "text=" + URLEncoder.encode("你的标题", StandardCharsets.UTF_8) +
            "&desp=" + URLEncoder.encode("最大支持64KB的文字内容", StandardCharsets.UTF_8)
    
        val request = HttpRequest.newBuilder()
            .uri(URI.create("https://wx.xtuis.cn/您的token.send"))
            .header("Content-Type", "application/x-www-form-urlencoded")
            .POST(HttpRequest.BodyPublishers.ofString(form))
            .build()
    
        val response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString())
        println(response.body())
    }
    $body = @{
      text = "你的标题"
      desp = "最大支持64KB的文字内容"
    }
    
    $result = Invoke-RestMethod -Method Post `
      -Uri "https://wx.xtuis.cn/您的token.send" `
      -Body $body `
      -ContentType "application/x-www-form-urlencoded"
    
    $result

推送参数

步骤

直接发送http请求

HTTP请求格式

https://wx.xtuis.cn/您的token.send

参数说明:

  • text: 消息标题,必填。
  • desp: 消息内容,选填。

例如:

https://wx.xtuis.cn/您的token.send?text=白银大涨&desp=白银2012超过5000

步骤

仅支持iPhone,使用步骤如下:

  • iPhone下载软件"Bark"
  • 填写Bark私有服务器为虾推啥
  • 发送bark http请求

HTTP请求格式

注册:Bark服务器-私有地址

https://bark.xtuis.cn?xia=您的token

使用:发送Bark的http请求

https://bark.xtuis.cn/您的token.send

参数说明:

  • text: 消息标题,必填。
  • desp: 消息内容,选填。

例如:

https://bark.xtuis.cn/您的token.send?text=白银大涨&desp=白银2012超过5000
限制类别 限制条数
每日推送上限 300
每分钟推送上限 10
单ip每日http请求上限 5000

需要更高推送额度?

以上限制适用于免费微信/Bark推送服务。如需更高推送限额,可按需升级到以下服务: 升级版 Email 通知升级版 企业微信通知推送服务(推送域名:qy.xtuis.cn)。

常见问题 FAQ

什么是虾推啥

虾推啥是一个能让你轻松地使用一行代码(一个http请求)就可以推送消息到手机通知的工具服务。

为什么使用

免费:在条数限制范围内免费(有关条数限制参见推送参数)
简单:无需注册,无需安装客户端,跨平台使用,只需微信关注我们的公众号即可使用
实时:即时推送,延时毫秒级
保护隐私:我们定期清理数据,承诺不在服务器上保存您的任何消息数据

什么情况下账户会被锁定?

在很短时间发出大量请求,或者连续几天推送数量超过每日上限,都有可能被识别为攻击,从而账户会被锁定,无法再推送。

如何解锁账户?

通过上边微信赞赏50元以上,然后给我们发E-mail:weixin@xtuis.cn 注明你的token和支付信息。我们将提供一次解冻服务,捐赠将用于推送服务的资源购买和运维。

联系我们