这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
下面小编就为大家带来一篇 JS 绕过代理、VPN 获取真实 IP 及内网 IP, 逆向追踪的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Firefox 跟 Chrome 支持 webRTC 可以向 STUN 服务器请求,返回内外网 IP,不同于 XMLHttpRequest 请求,STUN 请求开发者工具当中看不到网络请求的。
- //get the IP addresses associated with an account
- function getIPs(callback) {
- var ip_dups = {};
- //compatibility for firefox and chrome
- var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
- var mediaConstraints = {
- optional: [{
- RtpDataChannels: true
- }]
- };
- //firefox already has a default stun server in about:config
- // media.peerconnection.default_iceservers =
- // [{"url": "stun:stun.services.mozilla.com"}]
- var servers = undefined;
- //add same stun server for chrome
- if (window.webkitRTCPeerConnection) servers = {
- iceServers: [{
- urls: "stun:stun.services.mozilla.com"
- }]
- };
- //construct a new RTCPeerConnection
- var pc = new RTCPeerConnection(servers, mediaConstraints);
- //listen for candidate events
- pc.onicecandidate = function(ice) {
- //skip non-candidate events
- if (ice.candidate) {
- //match just the IP address
- var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
- var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
- //remove duplicates
- if (ip_dups[ip_addr] === undefined) callback(ip_addr);
- ip_dups[ip_addr] = true;
- }
- };
- //create a bogus data channel
- pc.createDataChannel("");
- //create an offer sdp
- pc.createOffer(function(result) {
- //trigger the stun server request
- pc.setLocalDescription(result,
- function() {});
- },
- function() {});
- }
- //Test: Print the IP addresses into the console
- getIPs(function(ip) {
- console.log(ip);
- });
以上这篇 JS 绕过代理、VPN 获取真实 IP 及内网 IP, 逆向追踪的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 phperz。
来源: http://www.phperz.com/article/17/0520/332002.html