如何避免Selenium爬虫被网站识破

news/2024/12/29 23:19:45/

在对一些需要进行登陆操作的网站爬取时,通常都会使用到Selenium。但是Selenium爬虫在爬取数据时也是会被网站检测到,这是因为Selenium模拟了浏览器行为,而相对于真实用户的浏览器,Selenium模拟无法识别JavaScript代码和CSS文件。此外,网站也可能通过检测请求头、IP地址、Cookie等信息来判断是否是爬虫。
接下来我们就详细的来了解下这些原因是怎么产生的。
1、请求头信息:一般情况下Selenium提供的请求头信息与正常的浏览器请求头略有不同,所以需要自定义User-Agent字段让请求头更像正常的浏览器。
2、IP封禁或限制访问:如果频繁使用同一个IP地址进行数据爬取,服务器可能会将该IP地址视为恶意IP并加入黑名单。
3、Cookie验证:部分网站可能会在登录后,在后续的每个请求中都要求携带相关的Cookie信息。
4、页面加载速度:如果程序访问频率过高,页面加载时间却显示异常迅速,网站越是往后就越容易加强反爬虫措施了。
以下就是针对上述问题而提供的解决方式:
1、更换User-Agent:可以在每个请求中使用不同的User-Agent字段,避免与其他请求相同IP和头部参数给网站接口留下“爬虫”的印象。
2、设置合理的间隔时间:通过设置适当间隔(如访问网站后1-5秒内不再访问),以模拟真实用户的行为,减少被检测到的概率。
3、使用代理IP:代理IP可以隐藏你的真实IP地址,但是如果时间较长或请求次数太频繁,代理IP也有被风控的危险,所以尽量使用更多,质量更好的IP池。
以下是一段使用代理IP的Selenium爬虫示例代码,可以在每次请求时更换一个随机代理IP,这种就是隧道转发模式的代理,需要注意的是,要使用合法、高质量的代理IP服务提供商比如亿牛云代理,以避免安全和质量问题。

    from selenium import webdriverimport stringimport zipfile# 代理服务器(产品官网 www.16yun.cn)proxyHost = "t.16yun.cn"proxyPort = "3111"# 代理验证信息proxyUser = "username"proxyPass = "password"def create_proxy_auth_extension(proxy_host, proxy_port,proxy_username, proxy_password,scheme='http', plugin_path=None):if plugin_path is None:plugin_path = r'/tmp/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)manifest_json = """{"version": "1.0.0","manifest_version": 2,"name": "16YUN Proxy","permissions": ["proxy","tabs","unlimitedStorage","storage","<all_urls>","webRequest","webRequestBlocking"],"background": {"scripts": ["background.js"]},"minimum_chrome_version":"22.0.0"}"""background_js = string.Template("""var config = {mode: "fixed_servers",rules: {singleProxy: {scheme: "${scheme}",host: "${host}",port: parseInt(${port})},bypassList: ["localhost"]}};chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});function callbackFn(details) {return {authCredentials: {username: "${username}",password: "${password}"}};}chrome.webRequest.onAuthRequired.addListener(callbackFn,{urls: ["<all_urls>"]},['blocking']);""").substitute(host=proxy_host,port=proxy_port,username=proxy_username,password=proxy_password,scheme=scheme,)print(background_js)with zipfile.ZipFile(plugin_path, 'w') as zp:zp.writestr("manifest.json", manifest_json)zp.writestr("background.js", background_js)return plugin_pathproxy_auth_plugin_path = create_proxy_auth_extension(proxy_host=proxyHost,proxy_port=proxyPort,proxy_username=proxyUser,proxy_password=proxyPass)option = webdriver.ChromeOptions()option.add_argument("--start-maximized")# 如报错 chrome-extensions# option.add_argument("--disable-extensions")option.add_extension(proxy_auth_plugin_path)# 关闭webdriver的一些标志# option.add_experimental_option('excludeSwitches', ['enable-automation'])driver = webdriver.Chrome(chrome_options=option,executable_path="./chromdriver")# 修改webdriver get属性# script = '''# Object.defineProperty(navigator, 'webdriver', {# get: () => undefined# })# '''# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})driver.get("https://httpbin.org/ip")

http://www.ppmy.cn/news/121249.html

相关文章

联想thinkbook14 2022款和2021款区别哪个好

处理器方面区别&#xff1a;联想thinkbook14 2021款的处理器是酷睿11代i5-1155G7、i7-1195G7&#xff0c;锐龙R5 5600U、R7 5800U四个&#xff0c;而2022款的处理器目前是酷睿12代i5 1240p&#xff0c;相比之下&#xff0c;thinkbook14 2022款在处理器性能方面更好些。 硬盘容…

联想小新 Air 14 2023 超极本 评测

小新 Air 14 2023 主打轻薄&#xff0c;厚度为 14.9-15.9mm&#xff0c;重约 1.34kg。 配置方面&#xff0c;小新 Air 14 2023 搭载英特尔 12 代酷睿 i5-1240P 处理器&#xff0c;配备 16G 内存和 512G SSD。 联想小新 Air 14 2023 超极本更多使用感受和评价 http://lenovo.adi…

联想扬天V15和V14锐龙版2023款区别对比评测 选哪个好

联想扬天V15和V14锐龙版2023款这两款笔记本的主要区别在四个方面&#xff0c;第一个方面是屏幕尺寸方面&#xff0c;联想扬天V15的屏幕尺寸是15.6英寸&#xff0c;而联想扬天V14的尺寸是14英寸&#xff1b;第二方面是屏幕占比方面&#xff0c;联想扬天V15的屏幕占比87%&#xf…

联想电脑怎么进入bios设置u盘启动

大家都知道&#xff0c;想要用u盘装系统&#xff0c;除了要把u盘制作成启动盘之外&#xff0c;还要进bios设置u盘启动&#xff0c;而联想电脑设置起来还是不太容易的&#xff0c;除了快捷启动菜单比较方便&#xff0c;若是要用传统方式进行设置&#xff0c;相对别的电脑来说更麻…

[随心译]2017.8.4-联想ThinkPad X1 Carbon评测:更进一步的一流超极本

联想ThinkPad X1 Carbon评测&#xff1a;更进一步的一流超极本 联想是商业笔记本领域的老牌厂商了&#xff0c;多年来一直生产高端便携笔记本电脑。虽然最近在发展的过程中收到苹果跟戴尔的排挤&#xff0c;还有一些老对手如惠普&#xff0c;华硕也登上舞台&#xff0c;联想现面…

联想小新Pro16和华硕无畏Pro15 2022哪个好

第一是屏幕的区别&#xff1a;联想小新Pro16是16英寸&#xff0c;2.5k分辨率&#xff0c;120Hz刷新率&#xff0c;ips屏幕&#xff0c;而华硕无畏Pro15 2022款的屏幕尺寸为15.6英寸&#xff0c;分辨率是2.8k&#xff0c;刷新率也是120Hz&#xff0c;采用的是OLED 屏幕材质&…

便携式微型计算机和笔记本的区别,笔记本和超极本及上网本 细谈三者区别

笔记本、上网本和超极本简介 笔记本就是一般的电脑了,又被称为“便携式电脑”,其最大的特点就是机身小巧,相比PC携带方便。目前,在全球市场上有多种品牌,排名前列的有联想、华硕、戴尔(DELL)、ThinkPad、惠普(HP)、苹果(Apple)、宏基(Acer)、索尼、东芝、三星等。 上网本(…

联想笔记本y430p加固态硬盘/ssd(M.2)

首先推荐一个链接 固态硬盘知识扫盲&#xff1a;史上最全SSD固态硬盘使用攻略 http://www.pc841.com/topic/65183.html 基于NAND Flash芯片的笔记本固态硬盘&#xff0c;常见的接口种类包括SATA、mSATA和NGFF ①SATA接口是目前流行的接口类型&#xff0c;被绝大部分机械硬盘所采…