selenium反爬之WebRTC

关闭浏览器自带的 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指纹等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值