通过服务器托管的 webhook 访问本地网络上的设备

假设阿格拉瓦尔

我有一个充当 webhook 的 python 脚本。它的一部分如下:

import json
import os
import urllib
import socket
import _thread
from flask import Flask
from flask import request
from flask import make_response
app=Flask(__name__)

ip = ('192.168.1.75', 9050)

@app.route('/webhook',methods=['GET','POST'])
    def webhook():
        _thread.start_new_thread(sendDataToDevice,(ip))
        req = request.get_json(silent=True,force=True)
        print("Request:")
        print(json.dumps(req,indent=4))
        res=makeWebHookResult(req)
        res=json.dumps(res,indent=4)
        r=make_response(res)
        r.headers['Content-Type']='application/json'
        return r

if __name__ == '__main__':
    app.run(port=8080,host='localhost')

该脚本的功能是向连接到本地网络的设备发送一些数据。当我打开 Web 浏览器并在 url 栏上输入以下内容时,它可以完美运行:

http://localhost:8080/webhook

我想在服务器上托管脚本,例如。赫鲁库。在这种情况下如何访问本地设备?

注意:我知道我可以在本地机器上运行脚本并使用 ngrok 使其在互联网上可见,但我希望即使在我的计算机关闭时也能访问它。另外,想要一个固定的链接,每次运行时 ngrok 给出的链接都会改变。

硝化的

我之前在物联网方面遇到过类似的问题。不幸的是,没有简单的方法可以让设备在线可见。这是我使用的一个简单的解决方案。它可能不是最好的,但它有效。

DDNS + 端口转发 + 静态 IP

如果您可以访问本地 WiFi 路由器,则可以设置称为 DDNS(动态域名系统)的内容。然后,您的路由器将连接到诸如no-ip (www.noip.com) 之类的 DDNS 服务提供商,并且它将在互联网上可见。您可以提供一个自定义 URL,如susmit-home.noip.com.

但是susmit-home.noip.com现在将仅指向您的 WiFi 路由器,而不指向您的 WiFi 网络。因此,如果您想访问本地device_ipdevice_port例如“192.168.1.75”、9050。那么您可以在路由器上为该本地 IP 端口组合设置端口转发。通常设置如下所示:

  • 本地IP:(device_ip例如192.168.1.75)
  • 本地端口:(device_port例如 9050)
  • 出站端口:(any_port例如 9050)

确保您device_ip是 WiFi 路由器上的静态 IP,这样它就不会改变。

最后在你的代码中,你可以ip = ('192.168.1.75', 9050)ip = ('susmit-home.noip.com', 9050).

其他解决方案:

  1. 一个稍微复杂一点的解决方案是设置 VPN,这样您的本地网络和远程服务器(例如 Heroku)都可以相互访问,就好像它们在同一个本地网络中一样。
  2. 如果您的设备是计算机或 Raspberry Pi,那么您可以使用 SSH 远程端口转发从远程服务器访问您的本地设备。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从本地网络访问在WSL(Linux的Windows子系统)上运行的Web服务器

无法在本地网络服务器上注册gitRunner

通过Android应用自动在本地网络上查找服务器

在本地网络上运行Bokeh服务器

通过本地网络托管HTTPS

在本地网络上查找特定的服务器

访问本地网络上的虚拟WAMP服务器

无法通过无线连接的设备访问本地网络

无法使用外部IP /域从本地网络访问本地Web服务器

从本地网络中的计算机远程访问安装在VM上的Apache服务器

如何访问本地网络服务器

无法访问本地网络上的Wamp Server 2.5服务

Alfresco,从本地网络访问服务器

Apache服务器允许从本地网络访问

无法访问本地网络外部/内部的Apache Web服务器

允许本地网络中的用户无需使用代理服务器即可通过pfSense访问Internet

从本地服务器访问本地网络上的客户端打印机

从本地网络驱动器运行访问查询

如何通过iptables访问远程服务器的本地网络

Android-在本地网络内托管服务器?

TCP-JAVA-如何在本地网络上查找服务器?

在本地网络上访问连接以太网的服务器

从Web服务器访问客户端本地网络上的文件,但不能访问本地计算机上的文件

允许访问本地网络上的 Apache 2 服务器

Xamarin 应用程序 (Android) 无法从物理设备访问本地网络中的 mongodb 服务器

无法从本地网络外部访问 Apache 服务器

从非本地网络访问服务器数据,无需端口转发

从本地网络访问本地托管的 Hyperledger Fabric

通过本地网络访问 nginx 服务器上的子域