专栏首页犀利豆的技术空间钉钉机器人回调内网穿透代理--使用篇

钉钉机器人回调内网穿透代理--使用篇

“山川异域,风月同钉”,被钉钉暴打的你,是不是已经想写一个机器人调戏一下钉钉了。在写机器人的时候,钉钉机器人的回调需要填写一个公网 http 地址。

这还没开发机器人,就没有 http 服务,没有 http 服务就收不到钉钉的回调,没有回调就不能调试机器人。不能调试机器人,就不能上线。

black

又一次陷入了被钉钉暴打的死循环,办法总比问题多,所以为了解决这个问题。我们就需要一个公网代理。所以我们就来撸一个。

这里注意一下,由于一般开发人员都处在内网环境。要想让代理做内网穿透,技术比较复杂。所以我们就换个思路。我们可以利用 Websocket 的双工的特性。接入代理,当代理收到钉钉的回调的时候,把消息推到我们本地开发环境。提升我们开发的效率。见下图:

dingproxy.jpg

使用方法

git clone https://github.com/diaozxin007/DingTalkProxy
cd DingProxyServer
./gradlew build
java -jar build/libs/dingWs-all.jar
# 如果需要在后台运行
nohup java -jar build/libs/dingWs-1.0.0-all.jar &>> nohup.out & tailf nohup.out

可以修改 resources 下的 server.properties

# 监听端口
server.port=8080
# 钉钉回调的 uri
server.api=/ding/api

然后重新运行:

./gradlew build

这个时候,proxy 已经开始正常运行了。

如果只是想看看一看钉钉回调的报文,那就可以直接使用 [websock-test] (http://www.websocket-test.com/) GUI 调试工具。

如果想在代码里面使用可以参考 DingProxyClinet 里面的代码。

注意事项

Q:1、为什么我连不上服务?

A:确认服务是否只开启了 https,如果开启了 https, 需要把协议头修改为 wss。

Q:2、我还是连不上?

A:需要确认 nginx 的配置,是否支持 WebSocket。

可以在 nginx 的配置中增加

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# 如果频繁超时断开可以配置
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;

Q:3、除了做钉钉的代理,还能干什么?

A: 理论上可以代理一切请求,然后转换为 String 通过 WebSocket 推送到客户端。

Q:4、我懒得部署服务了

A:可以使用我提供的公益服务

在回调接口中填写:

  • https://api.xilidou.com/ding/api

WebSocket 地址为:

  • wss://api.xilidou.com

为了防止滥用,每个客户端每次连接只能接收 10 条消息,然后会被断开。

下一篇文章将会具体讲解,如何使用 vertx 实现这个代理。敬请期待。

点击:https://xilidou.com/2020/03/25/dingsanduo/,获取 Github 地址。

本文分享自微信公众号 - 犀利豆的技术空间(xilidou1),作者:刁政欣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 居然有人忘记吃饭?写个微信机器人提醒他

    修改 config/default.json 里面的 'toName' 为要提醒人的备注名称。

    用户2060079
  • 那些有趣的代码(二)--偏不听父母话的 Tomcat 类加载器

    看 Tomcat 的源码越看越有趣。Tomcat 的代码总有一种处处都有那么一点调皮的感觉。今天就聊一聊 Tomcat 的类加载机制。

    用户2060079
  • Redis 的基础数据结构(三)对象

    前两篇文章介绍了 Redis 的基本数据结构动态字符串,链表,字典,跳跃表,压缩链表,整数集合,但是使用过 Redis 的同学会发现,平时根本没有使用过这些数...

    用户2060079
  • 如何快速爬取B站全站视频信息

    專 欄 ❈陈键冬,Python中文社区专栏作者,知乎专栏:尽瞎扯 GitHub: https://github.com/chenjiandongx ❈ B站我...

    Python中文社区
  • 值得收藏的27个机器学习的小抄

    机器学习(Machine Learning)有很多方面,当我开始研究学习它时,我发现了各种各样的“小抄”,它们简明地列出了给定主题的关键知识点。最终,我汇集了超...

    IT派
  • 正在研究机器学习?我们帮你准备了27个小抄…

    机器学习(Machine Learning)有很多方面,当我开始研究学习它时,我发现了各种各样的“小抄”,它们简明地列出了给定主题的关键知识点。最终,我汇集了超...

    CDA数据分析师
  • 可能是史上最全机器学习和Python速查表(附下载链接)

    来源:网路冷眼 作者:Hanson 本文长度为680字,建议阅读5分钟 本文为你分享有关机器学习、Python和相关数学知识的速查表大全。 机器学习有很多方面。...

    数据派THU
  • 值得收藏的27个机器学习的小抄

    昱良
  • 27个机器学习图表,帮你作弊一般飞速成长!

    今天分享一篇机器学习的文章。翻了一半,发现Linux中国已经翻译过了。。。干脆搬过来,还有一个姊妹篇《My Curated List of AI and Mac...

    小小科
  • 资源 | 全机器学习和Python的27个速查表(完整版)

    大数据文摘

扫码关注云+社区

领取腾讯云代金券