教你解决禁止F12、调试Debugger、丑化JS等反爬

2021-05-13 16:06:05 浏览数 (1)

1

前言

在爬取数据时,有一些网站设置了反爬(禁止F12网页调试Debugger丑化Js),比如下面这几种情况:

1.禁止查看源代码

2.网页调试Debugger

上面禁止查看网页问题,可以先按F12,再访问网站,但是又有网页调试Debugger

经过各种百度之后,可以在浏览器里面关闭Debug调试

这样就点击为蓝色就可以关闭了。

3.丑化JS

通过查看,可以发现数据是异步加载过来,查看数据包(network)时,发现js是被丑化过,无法查看

遇到以上这些反爬,难道就会阻止我们去采集数据了???显然不可能(哈哈哈)

上有政策,下有对策

今天教大家如何用python去解决这些问题,并爬取数据。

2

Python解决上述反爬

1.引入Selenium

本来想通过Reuqest请求数据,奈何数据是异步加载,异步链接也被js丑化了。

这时候我考虑抓包方式,但是很遗憾,无法通过抓包方式获取到异步链接

因此这里采用Selenium方式去爬取数据(后面还有新问题,太坑了,但是都解决了

2.Selenium准备工作

为了在python中使用Selenium,需要进行一些准备工作

安装Selenium库

通过下面命令去安装Selemium库

代码语言:javascript复制
pip install selenium

下载chromedriver.exe

查看自己对应浏览器(这里使用chrome)版本

在下面这个地址去下载chromedriver.exe

代码语言:javascript复制
http://chromedriver.storage.googleapis.com/index.html

下载自己浏览器对应版本(我这里选择89)

配置chromedriver.exe

将下载好的文件复制到python安装路径下

通过下面python代码可以查看python安装路径

代码语言:javascript复制
import sys
print(sys.path)

3.Selenium请求数据

代码语言:javascript复制
"""导入selenium库"""
from selenium import webdriver
driver = webdriver.Chrome()
"""未将chromedriver.ex复制到python路径下,需要这样写"""
#driver = webdriver.Chrome(executable_path="chromedriver.exe绝对路径")
driver.get('https://www.aqistudy.cn/historydata/daydata.php?city=北京')

结果如下:

发现没有获取到数据,原因是网站监测到非法操作,因此开启Debuggger,所以数据没有异步加载过来。

原本应该是这样的

下面需要进行另外操作(关闭Debugger)

4.给Selenium设置代理

设置代理

找到chrome的路径

在cmd(终端)下,进入到该路径

启动代理

代码语言:javascript复制
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:selenumAutomationProfile"

通过上面这个命令启动代理

ip是本机ip(127.0.0.1)

端口是9222

启动之后,自动打开chrome,并等待执行代码

编写代码

代码语言:javascript复制
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_experimental_option('debuggerAddress','127.0.0.1:9222')
driver = webdriver.Chrome(executable_path="C:/Users/Administrator/Anaconda3/envs/lyc36/chromedriver.exe",chrome_options=option)
driver.get('https://www.aqistudy.cn/historydata/daydata.php?city=北京')

这样等待的浏览器就自动加载到数据,成功解决!!

下面请看动图演示

0 人点赞