Lua - 通过 HTTP 代理获取本地外部 IP 和隧道外部 IP

我已经使用 Gluetun 设置了 VPN Docker 容器,该容器正在运行一个 HTTP 代理。我正在尝试查看是否可以使用 Lua http.request 来检索我的直接(本地)外部 IP 以及我的隧道外部 IP?

我找到了一些帮助我解释如何做到这一点的页面,但是我不知道如何连续检索两个 IP。(主要页面为)

使用 luasocket 和代理获取 url 页面

这是我的当前代码。

local url = require "socket.url"
local http = require "socket.http"
print("----------EXTERNAL IP DIRECT---------------")
local result, status = http.request("http://api.ipify.org/")
print(result, status)
print("---------EXTERNAL IP VIA PROXY-------------")
http.PROXY="http://192.168.102.134:8888/" -- 本地托管的 http 代理,没有名称/密码
local result1, status1 = http.request("http://api.ipify.org/")
print(result1, status1)

当我首次运行此代码时,我得到了以下结果。

---------EXTERNAL IP DIRECT---------------
2.234.10.99     200
---------EXTERNAL IP VIA PROXY-------------
192.168.102.107     200

这提供了我的外部 IP,但是底部列出的代理 IP 是我运行代码的机器的本地 IP,这让我感到惊讶,而且每次运行代码时都返回我的本地 IP。

----------EXTERNAL IP DIRECT---------------
192.168.102.107     200
---------EXTERNAL IP VIA PROXY-------------
192.168.102.107     200

观察.. 当我设置了 http.proxy 值时,这似乎会保留所有后续请求。 我可以在(Gluetun)http 代理容器日志中积极记录这些请求,因此它们已经被正确传递。

有人有任何想法,关于如何让 Lua 作为 http 客户端检索我的隧道外部 IP?

点赞