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"));
}
}
}
分享到:
相关推荐
MFC获取ip端口,网截,网络监视器,获取目标ip,获取进程的端口与目标ip
获取本机IP 设置本机IP配置为自动获取或者手动设置 测试端口是否可访问 Ping IP 功能实现通过用Socket类、Process类、来调用命令行程序测试和Socket访问端口。 温习知识写的小工具,如果有bug,那么理解万岁
在程序代码中获取用户的输入的IP和端口
获取网络,网卡端口,tcp/ip等各种网络信息
NULL 博文链接:https://smalltengger.iteye.com/blog/2232977
易语言取封包套接字IP端口模块 可以用套接字取出封包的IP和端口 易语言取封包套接字IP端口模块 可以用套接字取出封包的IP和端口
获取系统当前打开的端口状态,以及连接方的ip端口
经过一般的NAT端口映射后,客户端访问真实用户IP丢失,的处理方法。 利用NAT123端口映射,客户端用户真正IP不丢失。 示例了ASP,.NET,DISCUZ论坛等例子,都是用标准参数处理。 经过NAT123端口映射的WEB网站应用用户...
API HOOK易语言IP端口拦截转向源码 按照源码把IP端口改成你想要的就行了 然后注入DLL
IP端口探测器-无视禁PING 绿色版
扫描IP开放端口,支持多线程扫描。 通过该工具可以扫描常用的端口和指定的端口是否开放。 常用端口号: 代理服务器常用以下端口: (1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 (2). SOCKS...
Delphi下获取进程连接端口 。。
易语言IP段端口扫描源码,IP段端口扫描,扫描IP段,开始扫描,连接客户,等待延时,打开网页,PeekMessage
ROS ADSL动态IP端口映射另类做法已带贴图
自己制作的JAVA制作的多线程的可用端口扫描。运用了java的swing组件,利用多线程加快扫描速度。功能:获得本地IP,扫描可用端口。 含有两个文件,(main)主类文件,线程类文件。
此源代码是本人准对专需软件编写的,如果需要下载的话请适量给予修改或只做参考之用,以免不适合你的使用。源码的注释并没怎么做,如要参考还请自行查考易语言的帮助。如果你是高手,小弟在此敬请赐教。...
官方 应用与端口组合记录在IANA的端口分配列表中; 非官方 应用与端口组合不在IANA的端口分配列表中;以及 冲突 如果端口被两种应用或协议广泛使用。 0到1023号端口 以下列表仅列出常用端口,详细的列表请参阅IANA...
C++实现获取win7系统运行中的进程端口号,IP,状态和PID参数,测试可以获取相关参数
Visual C++源代码 60 如何获取计算机串行端口名称Visual C++源代码 60 如何获取计算机串行端口名称Visual C++源代码 60 如何获取计算机串行端口名称Visual C++源代码 60 如何获取计算机串行端口名称Visual C++源代码...
根据获取手机ip地址,z再根据地址获取ip所在地,在获取所在地的天气情况