详解selenium + chromedriver 被反爬的解决方法
作者:黑蚂蚁 发布时间:2022-03-20 18:40:46
标签:selenium,chromedriver,反爬
问题背景:这个问题是在爬取某夕夕商城遇到的问题,原本的方案是用selenium + chromedriver + mitmproxy开心的刷,但是几天之后,发现刷不出来了,会直接跳转到登陆界面(很明显,是遭遇反爬了)
讲实话,这还是第一次用硒被反爬的,于是进行大规模的测试对比。
同台机器,用铬浏览器正常访问是不用跳转到登陆界面的,所以不是IP的问题。再用提琴手抓包对比了一下两个请求头,请求头都是一样的,所以忽略标头的反爬。
最后通过分析,可能是硒被检测出来了。于是就去查资料。大概的查到是和webdriver的有关系的。因为这个在服务端是可以检测到的。于是通过fiddler抓包,全局搜索了一下webdriver,发现在js中果然是有判断的。导致selenium爬取的时候,被转到登陆界面。
解决方法:mitmproxy
因为mitmproxy可以拦截请求,所以在响应中,将包含的webdriver的JS中的关键字替换成其他的字符就可以了。
if "/_next/static/js/common_pdd" in flow.request.url:
flow.response.text = flow.response.text.replace("webdriver", "userAgent")
我是这样替换的。这样js解析的参数就变了,问题花刃而解。可以正常爬取数据了。
另外国外网上也有很多方法,比如修改webdriver里的一些特定参数名称,我尝试了一下,没有生效。
来源:https://blog.csdn.net/weixin_39847926/article/details/82262048


猜你喜欢
- 本文实例讲述了Python实现账号密码输错三次即锁定功能。分享给大家供大家参考,具体如下:初学Python—1#实现账号输错三次即锁定use
- 数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境。主要思路简单说,实现mysql
- server application error--IIS故障故障现象:Server Application Error The serve
- 发送端可以不停的发送新文件,接收端可以不停的接收新文件。例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_vis
- 直接使用word文档已经难不倒大家了,有没有想过用python构建一个word文档写点文章呢?当然这个文章的框架需要我们用代码一点点的建立,
- 做开发总得用到数据吧,Linux作为服务器,总得有一个数据库来存储测试用的数据,所以呢,这里附上CentOS6、7安装MySQL5.7的教程
- #-*- coding:utf-8 -*- from win32com.client import Dispatch import time
- 集合(Set)集合是无序和无索引的集合。在 Python 中,集合用花括号编写。实例创建集合:thisset = {"apple&
- row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col
- 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_n
- 本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下:简介先简略介绍一下。实际上,HTMLP
- QThread是Qt的线程类中最核心的底层类。由于PyQt的的跨平台特性,QThread要隐藏所有与平台相关的代码要使用的QThread开始
- 本文实例讲述了JS+CSS实现仿雅虎另类滑动门切换效果。分享给大家供大家参考。具体如下:这是仿照雅虎特色服务的一个Tab滑动切换效果,核心是
- 一、高级异常回顾异常相关的语句:try-except:用来捕获异常的通知try-finally:用来做一定要做的事reise:用来发生异常通
- 概括、从python1.6开始就可以处理unicode字符了。 一、几种常见的编码格式。 1.1、ascii,用1个字节表示。 1.2、UT
- 字符串类型是python里面最常见的类型,是不可变类型,支持单引号、双引号、三引号,三引号是一对连续的单引号或者双引号,允许一个字符串跨多行
- 如下:将html文件下载后,使用BeauifulSoup读取文件,并且使用html.parsertmp_soup.select里面的参数为:
- 一、shutil模块(了解):高级的文件、文件夹、压缩包处理模块。import shutil# shutil.copyfileobj(fsr
- 前言:一个完整的 HTTP 请求,包括客户端向服务端发送的 Request 请求和服务器端发送的 Response 响应。为了能方便的访问获
- debian6系统:首先先安装mysql吧:打开终端(root)用户登入apt-get purge mysql-server-5.5安装完成