0


cloudflare反爬,使用Selenium爬取的网址被cloudflare保护起来了的

其实用selenium爬取数据一般都是比较慢的,一般都会考虑到速度问题,会休眠很长时间,但是某些网站还是会禁止这样的爬虫访问,所以爬取某个网站的时候,发现网站被cloudflare保护起来了,需要认证才行,而且随便用了seleniumbase这个库,发现不行的,加上UC=True也不行,所以这边考虑用其他的方式来做。

在StackOverflow发现了一种方式,能处置当前的情况

https://stackoverflow.com/questions/67762186/user-profile-on-edge-using-selenium-python

https://stackoverflow.com/questions/71238056/msedge-failed-to-start-crashed-chrome-not-reachable

这样的方式可行的reason,和爬虫的特点相关,首先Selenium是使用edge的driver来打开浏览器的,但是爬虫下载的edge driver浏览器,爬取时访问网址保存的数据是在安装库里面,也就是和平时用的浏览器存放数据的地方不相同。所以就出现了问题的,平时用的浏览器存放数据的地方在C:\Users\10696\AppData\Local\Microsoft\Edge\User Data,但是爬虫用的浏览器存放数据的地方不在这里的,在其他地方的。

所以网站反爬的时候,可以通过存放数据的文件夹,看看浏览记录,看看收藏夹,看看历史记录和时间轴,看看是不是一直访问这个网站,但是没有访问过其他网站,若是通过存放数据的文件夹,发现一直访问这个网站,但是没有访问其他网站,可能就会被当作爬虫。

所以上面的方式,就是指定爬虫存放数据的目录,指定到平时浏览器存放数据的地方。平时浏览器存放数据的目录,包括了cookie,历史记录,浏览记录,收藏夹,用户信息等各种各样的内容。

指定目录以后,爬虫浏览器就可以访问平时浏览器的各种文件,可以正常显示收藏夹,历史记录,访问记录,标签页等各种信息,反爬机制也认不出来了的,反爬机制也会将这个当作正常的浏览过程。而且指定目录以后,若是平时的浏览器已经缓存了cookie,就不需要再次登录了的。

平时浏览器存放数据的地方:C:\Users\10696\AppData\Local\Microsoft\Edge\User Data
指定浏览器存放数据的方式:

service = Service(executable_path=driverpath)
edge_options = EdgeOptions()
userDataDir =r'''C:\Users\10696\AppData\Local\Microsoft\Edge\User Data'''
edge_options.add_argument(f"--user-data-dir={userDataDir}")
driver = webdriver.Edge(options=edge_options, service = service)

指定目录的时候,浏览器最好只有一个用户,若是有多个用户,还需要指定相应的用户才行,指定用户的方式就是指定用户存放数据的具体的文件夹,一般只有一个用户的话,是不需要指定的,而且指定了,可能后续还需要删除,因指定会自动产生用户文件夹。

不指定的话,默认的就是浏览器存放数据的根目录,指定的话会产生子文件夹,只能通过浏览器设置来删除 指定以后自动产生的用户文件夹,手动在文件夹中删除不起作用。

指定用户的方式,一般不需要指定,而且指定了还会自动产生子文件夹,比较繁琐的,所以默认注释掉

# profileDir = r'''C:\Users\10696\AppData\Local\Microsoft\Edge\User Data\Profile2'''# edge_options.add_argument(f"--profile-directory=")

虽然某些数据需要爬取,但是爬虫的速度当然是越慢越好,而且深夜爬虫也能减轻对服务器的pressure。

爬取速度过快还是可能被反爬的,所以休眠时间长点最好,几十秒几百秒几分钟的。

https://stackoverflow.com/questions/74188360/selenium-cloudflare-colab-and-json

https://stackoverflow.com/questions/76268244/python-bypass-cloudflare-using-headless-selenium-while-opening-the-new-tab

https://stackoverflow.com/questions/68289474/selenium-headless-how-to-bypass-cloudflare-detection-using-selenium

https://stackoverflow.com/questions/78077400/scraping-webpage-using-selenium

https://stackoverflow.com/questions/77914990/selenium-stuck-in-cloudflares-checking-if-the-site-connection-is-secure

https://stackoverflow.com/questions/60296873/sessionnotcreatedexception-message-session-not-created-this-version-of-chrome


本文转载自: https://blog.csdn.net/m0_50617544/article/details/138469662
版权归原作者 九是否随机的称呼 所有, 如有侵权,请联系我们删除。

“cloudflare反爬,使用Selenium爬取的网址被cloudflare保护起来了的”的评论:

还没有评论