赞
踩
背景:笔者采用的WORKSTATION PRO"17+Ubuntu系统。笔者的虚拟机可以连接外网,主机或通过SSH远程也能连接我的虚拟机。通过内网穿透方式实现外网访问。我选择使用ngrok工具来实现这一目标。
虚拟机网络配置如下:
虚拟机的相关网络端口需要开放:
- 可使用命令:
-
- sudo ufw allow/deny 20:允许/拒绝访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
-
- 查看某个端口是否打开命令
- 命令:nc -vz ip 80
-
- UFW 是标准 Ubuntu安装过程中的一部分,它应该已经在系统上存在。如果因为某些原因,它没有被安装,可以通过输入下面的命令安装它:
-
- sudo apt update
-
- sudo apt install ufw
-
- 查看端口号
- 在Ubuntu中查看端口号的命令是netstat。可以使用以下命令来查看当前开放的端口:
-
- sudo netstat -tunlp
-
- 其中,参数含义如下:
- -t:仅显示 TCP 协议的连接
- -u:仅显示 UDP 协议的连接
- -n:不解析服务名称,使用端口号表示服务
- -1:仅显示监听状态的连接
- -p:显示进程名或进程 ID
其它相关命令自行查询。
在虚拟机中,后端服务需要启动
ngrok原理如下图所示。
Ngrok配置步骤如下:
在ngrok官网注册好之后,登录管理界面后,会出现下图控制中心。
控制中心选择Linux系统,按照他给出的步骤进行ngrok下载和安装。
将ngrok安装好后,采用 ngrok http 8080进行启动。启动界面如下,图中forwarding就是URL,
将URL链接复制到网页上,默认打开界面如图
当你访问网址为你自己构建的网页时,笔者的测试界面如下图:链接为:https://2e9b-220-89-248-151.ngrok-free.app/wx
即穿越成功,下面是测试代码,我用的微信公众号的开发文档中的例子。
首先创建一个main.py文件,内容如下。
- import web
- from handle import Handle
-
- urls = (
- '/wx', 'Handle',
- )
-
- # class Handle(object):
- # def GET(self):
- # return "hello, this is handle view"
-
- if __name__ == '__main__':
- app = web.application(urls, globals())
- app.run()
再创建一个handle.py文件,进行get请求解析,
- import hashlib
- import web
-
-
- class Handle(object):
- def GET(self):
- try:
- data = web.input()
- print("handle/GET func: data is", data)
- if len(data) == 0:
- print("hello, this is handle view123")
- return "hello, this is handle view123"
- signature = data.signature
- print("handle/GET func: signature: ", signature)
- timestamp = data.timestamp
- nonce = data.nonce
- echostr = data.echostr
- token = "xxx" # 请按照公众平台官网\基本配置中信息填写
- print("handle/GET func: signature, timestamp, nonce, echostr: ", signature, timestamp, nonce, echostr)
-
- list = [token, timestamp, nonce]
- list.sort()
- sha1 = hashlib.sha1()
- map(sha1.update, list)
- hashcode = sha1.hexdigest()
- print("handle/GET func: hashcode, signature: ", hashcode, signature)
- if hashcode == signature:
- return echostr
- else:
- return ""
- except Exception as Argument:
- return Argument
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。