栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【Python爬虫】Linux下selenium设置启动参数过掉检测/抹掉特征

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python爬虫】Linux下selenium设置启动参数过掉检测/抹掉特征

写在前面

        因为知乎的登录有滑块,所以是用selenium登录拿cookie(需要过掉检测,下面会讲),然后放到cookie池,Windows下是没有什么问题,但是最后还是要放到服务器上去执行的。这就涉及到linux上的谷歌游览器安装以及配置        

过掉各种网站对selenium的检测,在启动的时候附加启动参数,给它一个端口,例如

windows下的相应操作

windows下先cd 到chrome的安装目录,然后输入如下命令:

C:Program FilesGoogleChromeApplication>chrome.exe --remote-debugging-port=9222

不出意外的话会自动谷歌游览器

然后输入如下命令,测试是否成功

curl 127.0.0.1:9222/json

如果是如图所示就说明OK了

 然后就是python来调用

具体代码如下,首先是需要谷歌游览器附加启动参数的模式来启动,然后python脚本再运行,调用chromedriver来执行

from selenium import webdriver
import requests
from selenium.webdriver.common.action_chains import ActionChains
from chaojiying import Chaojiying_Client

option = webdriver.ChromeOptions()
option.add_experimental_option('debuggerAddress','127.0.0.1:9222')
web = webdriver.Chrome(options=option)
web.get("https://www.zhihu.com/")

这样就可以实现全局过掉检测,因为不是通过chromedriver启动的,而是通过我们手动启动的,chromedriver只是去监听了9222这个端口

Linux下的相应操作

下载linux的google chrome 离线包,在windows下载之后传到linux上

https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

安装所需依赖包

yum install libX11 libXcursor libXdamage libXext libXcomposite libXi libXrandr gtk3 libappindicator-gtk3 xdg-utils libXScrnSaver liberation-fonts

安装chrome:到相应目录,下执行如下命令

rpm -ivh google-chrome-stable_current_x86_64.rpm 

可能的报错:libvulkan.so.1()(64bit)

解决办法

yum install libappindicator-gtk3
yum install liberation-fonts
yum -y install vulkan-1.1.97.0-1.el7.x86_64

查看版本号以及测试是否可用

google-chrome --version

google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/

下载chromedriver

根据版本号去下载相应的chrome webdriver

http://npm.taobao.org/mirrors/chromedriver

解压webdriver

unzip chromedriver_linux64.zip

将可执行文件移到bin目录 (Mac环境改为 /usr/local/bin 即可)

mv chromedriver /usr/bin/

启动参数的设置:nohup后台启动,设置9222端口

nohup google-chrome-stable --no-sandbox --headless --disable-gpu --remote-debugging-port=9222 &

查看进程是否启动

ps -ef | grep google-chrome
python调用代码
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
import requests
from selenium.webdriver.common.action_chains import ActionChains


option = webdriver.ChromeOptions()
option.add_experimental_option('debuggerAddress','127.0.0.1:9222')
zh = webdriver.Chrome(options=option)
zh.get("https://www.zhihu.com/")
print(zh.title)
zh.close()

结果

 

其他

批量杀死chromedriver进程

ps -ef|grep chromedriver|grep -v grep|cut -c 9-15|xargs kill -9

如有写的不对的地方还请指正,会第一时间修改

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号