`
happysoul
  • 浏览: 403452 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

获取ngrok分配的IP端口

    博客分类:
  • JAVA
 
阅读更多

ngrok
一句话描述:免费,暂时还不知道是否限制流量的,国外版本的 --- 花生壳
主要的作用是内网穿透,将你指定的端口映射到互联网上访问

客户端下载地址
https://ngrok.com/download

支持 Window Linux Arm MacOS

代理区域默认US,可选亚洲、欧洲等

举例,我设置了web和ssh 2种模式,分别是http地址https地址,ssh的tcp端口
因为免费用户,给的都是随机数(暂时用xxxx代替),第二列是你客户端的出口IP地址,第三列是调用服务所在区域,我选择的是新加坡(ap,这个距离总比us要好)
引用

http://xxxxx.ap.ngrok.io 111.164.xx.xx ap
https://xxxx.ap.ngrok.io 111.164.xx.xx ap
tcp://0.tcp.ap.ngrok.io:xxxx 111.164.xx.xx ap


原理就是客户端与远程提供服务的服务器创建了一个长连接,ngrok会开放接口对外可以访问,当有http或者tcp请求的时候他会转发相应的请求到你的客户端并返回结果(比如访问网站)这种方式可以很容易本地调试需要互联网应用的程序(如微信服务)

因为网上教程已经很多了,下面只是通过java登录网站,通过用户名密码获取当前自动分配的域名和端口信息,输出的结果如上所示

依赖jar文件
主要是 jsoup 用来解析html,阿里的 fastjson 用来解析 json 结果

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JoupPost {	
	/**
	 * https网站登录并获取里面的json信息中的ip地址
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		//网站登录元素有用户名、密码、还有隐藏的token
		Map<String,String> map = new HashMap<String, String>();
		map.put("email", "xxx@xxx.cn");
		map.put("password", "xxxx");
		//1获取token
		Connection con1 = Jsoup.connect("https://dashboard.ngrok.com/user/login");
		Response rs1 = con1.execute();
		Map<String,String> cookies = rs1.cookies();
		Document doc1 = rs1.parse();
		Elements es1 = doc1.getElementsByAttributeValue("name","csrf_token");
		if(!es1.isEmpty()){
			map.put("csrf_token",es1.get(0).attr("value"));
//			System.out.println(es1.get(0).attr("value"));
		}
		
		//通过token和cookie登录网站
		Connection con2 = Jsoup.connect("https://dashboard.ngrok.com/user/login");
		con2.referrer("https://dashboard.ngrok.com/user/login");
		con2.cookies(cookies);
		con2.timeout(60*1000);
		con2.data(map);
		con2.method(Method.POST);
		Response rs2 = con2.execute();
		cookies = rs2.cookies();
//		System.out.println("cookie2:"+cookies);
//		Document doc2 = rs2.parse();
//		System.out.println(doc2.body());
		
		//调用状态查询页面获取网页数据
		Connection con3 = Jsoup.connect("https://dashboard.ngrok.com/status");
		con3.referrer("https://dashboard.ngrok.com/status");
		con3.cookies(cookies);
		con3.timeout(30*1000);
		Document doc3 = con3.get();
//		System.out.println(doc3.body());
		
		//获取div标签、再获取标签内的json数据、再解析json
		Element e = doc3.getElementById("preloaded");
		JSONObject jo = JSONObject.parseObject(e.attr("data-value"));
		JSONArray ja = jo.getJSONArray("online_tunnels");
//		System.out.println(ja.toJSONString());
		
		for(Object j:ja){
			JSONObject o = (JSONObject)j;
			System.out.println(o.getString("url")+"\t "+o.getString("remote_addr")+"\t "+o.getString("region"));
		}
	}
}

分享到:
评论

相关推荐

    ngrok客户端window64

    - 启动服务,并指定要暴露的本地端口,例如`ngrok http 8080`,这将映射8080端口到ngrok分配的公共URL。 3. **主要功能**: - **实时日志**:ngrok提供实时的日志输出,可以查看所有通过隧道的HTTP请求,这对于...

    ngrok和远程桌面配置_dlgcy.zip

    当外部请求到达这个URL时,ngrok会将请求转发到你的内网IP和指定端口。ngrok支持多种协议,包括HTTP、HTTPS、TCP和Websocket,这样你就可以对外展示你的Web应用、API服务甚至是本地的数据库连接。 接着,我们探讨...

    ngrok-64.zip

    用户只需要在本地运行ngrok客户端,并指定要暴露的服务端口,ngrok 就会分配一个临时的公开URL,通过这个URL,外界可以访问到用户的内网服务。 免费版的ngrok 提供了一定的使用限制,比如隧道的带宽和连接数,但...

    SRT之公网IP地址端口映射解决方案.docx

    除了上述提到的方法之外,还有一些其他工具可以用来获取公网IP地址,如花生壳、Ngrok、n2n、lanproxy等。这些工具各有特点,可以根据实际情况选择最适合的一种。 #### 四、总结 在实际部署SRT视频传输系统时,公网...

    自己写的精细版ngrok教程

    一旦客户端正常运行,就可以使用分配的外网IP地址和端口来访问原本只能在内网访问的本地程序了。 在使用ngrok时需要注意,虽然文中提到了小米球版本的ngrok并不好用,但还有其他版本的ngrok可以使用。例如文中提到...

    ngrok-stable-windows-amd64.rar

    1. 解压下载的rar文件,获取ngrok可执行文件。 2. 运行ngrok,提供必要的命令行参数,如要转发的本地端口号和自定义的公共URL。 3. 开始服务后,ngrok会显示一个可供外部访问的URL,通过这个URL,其他人就可以通过...

    简单的端口映射

    端口映射是一种网络技术,用于在网络设备上将内部网络中的私有IP地址转换为公有IP地址,以便外部网络能够访问内部网络的服务。简单来说,就是让外网可以通过特定端口访问到内网中的某个服务或者应用程序。 ### 知识...

    ngrok-stable-windows-amd64.zip

    它的工作方式是:你运行ngrok客户端,它会分配一个公共URL,这个URL可以转发到你的本地主机的指定端口。这样,即使你的机器没有公开IP,外部世界也能通过这个URL访问你的本地服务。 2. **安装与使用**: - 解压缩 ...

    初级内网穿透工具Ngrok

    3. **生成公开URL**:Ngrok会分配一个公共的HTTPS URL,这个URL可以分享给他人,他们无需知道你的内网设置就能访问到你的本地服务。 4. **实时监控**:Ngrok还提供了实时的日志输出,方便开发者监控远程访问的情况...

    NGROK---LINUX服务端和客户端

    - 下载NGROK的源码,可以访问其官方网站获取。 - 在服务器上编译并安装NGROK,通常涉及`go get`命令和自定义配置文件。 - 配置服务端的配置文件(如`ngrok.yml`),包括监听的端口、认证信息等。 3. **部署Linux...

    本地域名映射

    当您在本地启动ngrok时,它会分配一个公共URL,这个URL可以指向您本地机器上的任意端口,这样任何有此URL的人都可以访问到您的本地服务,而无需知道具体的IP地址和端口号。 本地域名映射的实现通常涉及DNS(域名...

    c# upnp TCP 穿透

    NAT通常会阻止这种直接连接,因为它为每个内部IP分配了临时的外部IP和端口映射,这使得两台内部设备无法直接找到对方。UPNP提供了一种方法,允许设备向NAT设备发送请求,创建或修改端口映射,从而实现TCP穿透。 在...

    op-slack-connector:用于Slack和Open Project实施集成的连接器

    操作松弛连接器这个概念证明提供了和的集成。当前支持的功能: 在Open Project中使用Slack机器人记录工作包的时间。... 这些将分配给安装后从Open Project和Slack获得的令牌安装并...ngrok http 3000 )以获取公共IP地址

Global site tag (gtag.js) - Google Analytics