mirror of
				https://github.com/privacyguides/privacyguides.org.git
				synced 2025-11-03 21:07:55 +00:00 
			
		
		
		
	Webrtc fix (#619)
* Remove webrtc.html * Replace webrtc.html with ipleak.net
This commit is contained in:
		
				
					committed by
					
						
						Samuel Shifterovich
					
				
			
			
				
	
			
			
			
						parent
						
							958954f711
						
					
				
				
					commit
					e10fef5497
				
			@@ -606,9 +606,7 @@ layout: default
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<!-- orange "Test your Browser now" button -->
 | 
					<!-- orange "Test your Browser now" button -->
 | 
				
			||||||
<p>
 | 
					<p>
 | 
				
			||||||
        <a class="btn btn-warning" href="webrtc.html">
 | 
					        <a class="btn btn-warning" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser now</a>
 | 
				
			||||||
            Test your Browser now
 | 
					 | 
				
			||||||
        </a>
 | 
					 | 
				
			||||||
</p>
 | 
					</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- heading: How to disable WRTC in Firefox? -->
 | 
					<!-- heading: How to disable WRTC in Firefox? -->
 | 
				
			||||||
@@ -636,9 +634,7 @@ layout: default
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<!-- the "Test your Browser again" button -->
 | 
					<!-- the "Test your Browser again" button -->
 | 
				
			||||||
<p>
 | 
					<p>
 | 
				
			||||||
    <a class="btn btn-primary" href="webrtc.html">
 | 
					    <a class="btn btn-primary" target="_blank" rel="noopener noreferrer" href="https://ipleak.net">Test your Browser again</a>
 | 
				
			||||||
                    Test your Browser again
 | 
					 | 
				
			||||||
    </a>
 | 
					 | 
				
			||||||
</p>
 | 
					</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- steps to manually disable WebRTC in Chrome -->
 | 
					<!-- steps to manually disable WebRTC in Chrome -->
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										141
									
								
								webrtc.html
									
									
									
									
									
								
							
							
						
						
									
										141
									
								
								webrtc.html
									
									
									
									
									
								
							@@ -1,141 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
layout: default
 | 
					 | 
				
			||||||
active_page: webrtc
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<div class="col-12">
 | 
					 | 
				
			||||||
<div class="row">
 | 
					 | 
				
			||||||
<div class="mx-auto text-center">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<h1><a href="https://www.privacytools.io/"><img src="assets/img/layout/logo.png" class="img-responsive" alt="privacytools.io"></a></h1>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<h2>WebRTC IP Leak VPN / Tor IP Test</h2>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p>
 | 
					 | 
				
			||||||
	WebRTC is a communication protocol that relies on JavaScript that can leak your actual IP address from behind your VPN. While software like NoScript prevents this, it's probably a good idea to block this protocol directly as well, just to be safe. This page will test if your internet browser is affected by the <strong>WebRTC Leak.</strong>
 | 
					 | 
				
			||||||
</p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p>
 | 
					 | 
				
			||||||
This demo secretly makes requests to STUN servers that can log your
 | 
					 | 
				
			||||||
request. These requests do not show up in developer consoles and
 | 
					 | 
				
			||||||
cannot be blocked by browser plugins like AdBlock, Ghostery, etc.
 | 
					 | 
				
			||||||
</p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p> </p>
 | 
					 | 
				
			||||||
<strong>Your local IP addresses:</strong>
 | 
					 | 
				
			||||||
<ul></ul>
 | 
					 | 
				
			||||||
<strong>Your public IP addresses:</strong>
 | 
					 | 
				
			||||||
<ul></ul>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p> </p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p>Your browser is not safe and will show your real IP even though you are using a VPN service if you can see your real IP addresses here.</p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p><strong><a href="https://www.privacytools.io/#webrtc">How to fix the WebRTC Leak?</a></strong></p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p> </p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<p>Source Code: <a href="https://github.com/diafygi/webrtc-ips" target="_blank">GitHub</a>
 | 
					 | 
				
			||||||
<br>Script Version: Jul 20, 2015</a></p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
 | 
					 | 
				
			||||||
        <script>
 | 
					 | 
				
			||||||
            //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 useWebKit = !!window.webkitRTCPeerConnection;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //bypass naive webrtc blocking using an iframe
 | 
					 | 
				
			||||||
                if(!RTCPeerConnection){
 | 
					 | 
				
			||||||
                    //NOTE: you need to have an iframe in the page right above the script tag
 | 
					 | 
				
			||||||
                    //
 | 
					 | 
				
			||||||
                    //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
 | 
					 | 
				
			||||||
                    //<script>...getIPs called in here...
 | 
					 | 
				
			||||||
                    //
 | 
					 | 
				
			||||||
                    var win = iframe.contentWindow;
 | 
					 | 
				
			||||||
                    RTCPeerConnection = win.RTCPeerConnection
 | 
					 | 
				
			||||||
                        || win.mozRTCPeerConnection
 | 
					 | 
				
			||||||
                        || win.webkitRTCPeerConnection;
 | 
					 | 
				
			||||||
                    useWebKit = !!win.webkitRTCPeerConnection;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //minimal requirements for data connection
 | 
					 | 
				
			||||||
                var mediaConstraints = {
 | 
					 | 
				
			||||||
                    optional: [{RtpDataChannels: true}]
 | 
					 | 
				
			||||||
                };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //construct a new RTCPeerConnection
 | 
					 | 
				
			||||||
                var pc = new RTCPeerConnection(servers, mediaConstraints);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                function handleCandidate(candidate){
 | 
					 | 
				
			||||||
                    //match just the IP address
 | 
					 | 
				
			||||||
                    var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
 | 
					 | 
				
			||||||
                    var ip_addr = ip_regex.exec(candidate)[1];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    //remove duplicates
 | 
					 | 
				
			||||||
                    if(ip_dups[ip_addr] === undefined)
 | 
					 | 
				
			||||||
                        callback(ip_addr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    ip_dups[ip_addr] = true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //listen for candidate events
 | 
					 | 
				
			||||||
                pc.onicecandidate = function(ice){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    //skip non-candidate events
 | 
					 | 
				
			||||||
                    if(ice.candidate)
 | 
					 | 
				
			||||||
                        handleCandidate(ice.candidate.candidate);
 | 
					 | 
				
			||||||
                };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //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(){});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }, function(){});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //wait for a while to let everything done
 | 
					 | 
				
			||||||
                setTimeout(function(){
 | 
					 | 
				
			||||||
                    //read candidate info from local description
 | 
					 | 
				
			||||||
                    var lines = pc.localDescription.sdp.split('\n');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    lines.forEach(function(line){
 | 
					 | 
				
			||||||
                        if(line.indexOf('a=candidate:') === 0)
 | 
					 | 
				
			||||||
                            handleCandidate(line);
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                }, 1000);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //insert IP addresses into the page
 | 
					 | 
				
			||||||
            getIPs(function(ip){
 | 
					 | 
				
			||||||
                var li = document.createElement("li");
 | 
					 | 
				
			||||||
                li.textContent = ip;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //local IPs
 | 
					 | 
				
			||||||
                if (ip.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/))
 | 
					 | 
				
			||||||
                    document.getElementsByTagName("ul")[0].appendChild(li);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //IPv6 addresses
 | 
					 | 
				
			||||||
                else if (ip.match(/^[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}$/))
 | 
					 | 
				
			||||||
                    document.getElementsByTagName("ul")[2].appendChild(li);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                //assume the rest are public IPs
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    document.getElementsByTagName("ul")[1].appendChild(li);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        </script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
</div>        
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user