因为知乎的登录有滑块,所以是用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-chromepython调用代码
# -*- 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
如有写的不对的地方还请指正,会第一时间修改



