关闭浏览器自带的 WebRTC 功能
1.简介
-
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API。它于 2011 年 6 月 1 日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 推荐标准
-
由于 WebRTC 存在暴漏真实 IP 地址的可能,所以我们需要关闭 WebRTC。
2.原理
- 使用webrtc技术的网站js调用浏览器接口是绕过浏览器代理直接与webrtc服务器建立tcp或者udp连接,我们都知道tcp或者udp肯定是知道通信对方的ip的,这样一来服务器就知道了客户端的真实ip
- 有些不是语言或视频的网站,也使用这项技术从而悄悄的知道客户真实的ip,比如某些广告网站,当然它可以用在反爬上面来
3.解决方案
-
Mozilla Firefox:在地址栏输入 “about:config”,搜索 “media.peerconnection.enabled” 并双击将值改为 “false”,WebRTC 将被关闭。
-
Google Chrome:在谷歌应用商店安装谷歌官方扩展 “WebRTC Leak Prevent”,在插件选项里找到 “IP handling policy:” 选择第三项 “Disable non-proxied UDP”,并点击下方 “Apply settings”
-
Google Chrome 另一种方法:在谷歌应用商店安装谷歌官方扩展 “WebRTC Network Limiter”,在插件选项里找到 “Options” 选择第四项 “Use my proxy server” 即可
测试WebRTC是否成功,可以通过访问:https://browserleaks.com/ip
selenium解决方案:
from selenium import webdriver
"""
不关闭webrtc
"""
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(
"excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
chrome_options.add_argument("proxy-server=socks5://127.0.0.1:1080")
driver = webdriver.Chrome(
"./chromedriver", chrome_options=chrome_options)
driver.get("https://browserleaks.com/ip")
from selenium import webdriver
"""
关闭webrtc
"""
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(
"excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
chrome_options.add_argument("proxy-server=socks5://127.0.0.1:1080")
preferences = {
"webrtc.ip_handling_policy": "disable_non_proxied_udp",
"webrtc.multiple_routes_enabled": False,
"webrtc.nonproxied_udp_enabled": False
}
chrome_options.add_experimental_option("prefs", preferences)
driver = webdriver.Chrome(
"./chromedriver", chrome_options=chrome_options)
driver.get("https://browserleaks.com/ip")
4.小结
网站不只可以测试WebRTC还包含其他的比如canvas指纹等