linux centos 安装chrome selenium 实现自动签到

在linux centos7上通过selenium、chromedriver实现网站(京东、西集、考拉)自动签到

centos7安装chrome

腾讯云服务器,操作系统centos7.4,安装chrome使用npm方式。

步骤如下

chrome默认安装目录/opt/google/chrome
可以用如下命令测试是否安装成功:google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/
安装成功会在当前目录生成百度首页截图(会报一个错,但没什么影响,是个缺少UI的提示),将截图下载到windows机器,打开看到字体都是乱码。这个乱码对后来的脚本运行造成了很大误导。后面会详说。

遇到的问题:

  • 缺少相关依赖,逐个进行安装
  • 现在chrome最低支持centos7。centos6上的一些安装脚本或方案均已失效,本想在公司测试机6.9上安装,搜了一些资料最后发现是徒劳。甚至之前在6上能绕过一些限制安装chrome的脚本的作者在他网站上声明,该脚本已死,不要再联系他了。
    • 7上的一些依赖都是无法在6上安装的,yum找不到对应的库
  • centos6可以考虑安装chromium

安装chromedriver

需要注意的是chromedriver必须要与chrome版本对应,否则不能正常工作。我这里安装的是chrome68,对应的是chromedriver版本是2.41
对应关系和下载地址,百度就可以看到。下面地址仅供参考,随时失效

  1. 对应关系地址
  2. 下载地址

测试chromedriver:

[root@VM_0_11_centos chrome]# ./chromedriver
Starting ChromeDriver 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706) on port 9515
Only local connections are allowed.  

如上说明启动成功。这里./chromediver --help可以查看命令使用说明。如果有报错信息,可以加上参数./chromedriver --verbose输出详细日志。
我在这里遇到一个问题,查了很久,运行./chromedriver命令后,一直报错,报一个[SERVER]中间一长串英文(99),记不住了,查了很久无果,最后打开verbose参数,提示了一个IPV6什么的错误,就把系统的ipv6地址设置打开了,命令是:sysctl -w net.ipv6.conf.all.disable_ipv6=0,之后就不再报错了。但后来通过selenium运行的时候发现,不必理会该报错。

运行selenium程序

此处值得说明是,chromeDriver需要设置一些options,代码如下:

 System.setProperty("webdriver.chrome.driver", "/opt/google/chrome/chromedriver");
 ChromeOptions options = new ChromeOptions();
 options.addArguments("--headless");
 options.addArguments("--no-sandbox");
 options.addArguments("--disable-gpu");
 options.addArguments("--window-size=1920,1080");
 ChromeDriver driver = new ChromeDriver(options);

遇到的问题

现象:xiji网可以正常登录,但kaola、jd就失败,登录不成功
结论:某些网站有安全验证机制,比如网易,如果登录IP非常用IP,会弹出验证码。京东则会有一个中间页提示安全信息。

说说错误
考拉的问题:

因为xiji的成功,加上截图里的乱码,一直以为是字符编码的问题,导致用户名密码错误,服务器不认。于是又是设置系统语言,又是安装字体,设置java文件编码,设置都没有效果。

京东的问题:

京东登录失败的问题在于,用用户名登陆后跳到了一个中间页,提示有安全风险,要我去绑定手机,但我手机已经绑定了,如果直接用手机号+密码登录就没问题。估计也是IP变化造成的问题。

下面我说说怎么定位问题的。

chrome remote debug

这是chrome的一个debug功能,可以用来在别的机器或chrome里debug无头chrome。
输入命令:

STEP1:在远程机器(云服务器)上执行:

google-chrome-stable --no-sandbox --headless --disable-gpu --remote-debugging-port=9222 https://m.kaola.com/login.html 

如此就在9222上监听了chrome的debug端口

STEP2:这里需要注意,上述操作只是chrome在本地暴露一个地址,远程是无法访问的,在windows机器上打开http://ip:9222是无法访问的,此时需要在云服务器上做一个端口映射,这里使用ssh命令

 ssh -L 0.0.0.0:9223:localhost:9222 localhost -N  

STEP3:
在chrome地址栏里输入http://ip:9223 能看到当前chrome debug信息,输入http://ip:9223/json 能看到一些相信信息,这里暴露了一个websocket的调试地址

http://ip:9223/devtools/devtools.html?ws://ip:9223/devtools/page/ADE6C8375C62850FDD7C951260626600

这个地址是给websorcket用的,可能需要一些开发才能使用,这里没有深入。只作了解

STEP4:
在windows机器上打开chrome,地址栏输入

chrome://inspect/#devices
enter image description here

先在第一个红框处,配置服务器ip,当chrome检测到的时候,就会在remote target里出现一个Target,点击第二个红框,inspect,就进入debug模式了,就会打开一个窗口,里面就是在云服务上运行的chrome界面,地址是上面配置的https://m.kaola.com/login.html

enter image description here

这种方案的缺点主要有两个:

  1. 网页乱码。但实际上并非乱码,代码完全跑的通,用浏览器F12看源码字体也不是乱码,为什么网页渲染乱码,更深入的原因查不到
  2. 操作延迟高,有的网站还算流畅,有的网站就很卡,做一个 操作延迟很久,影像正常操作。只能做一些基本验证。

通过这种方案,我检查到了为什么考拉总是登录失败的原因。我发现,kaola登录的时候总是提示滑动验证码,原来是ip不合法了,想必是第一次的时候就发现不是常用ip,让输入滑动验证码,之后一直尝试登录,ip可能被拉黑了。

京东的问题是,点击登录,跳到了一个中间页,提示手机绑定安全之类的,后来改为手机号登录就没问题了。

通过remote debug方式,找到了登录失败的原因,下面看看怎么解决ip被封的问题。

使用squid代理

一般来说,服务器拉黑ip的几种情况

  • 短时间频繁访问
  • 密码多次输入错误
  • 非常用ip登录

如何让ip解封?大概有几种:

  1. 输入正确密码,等待服务器解封
  2. 换一个账号试试
  3. 重新注册账号,并登录

最糟糕的情况是,整个ip被封,无论使用哪个账号都需要验证。这次还比较幸运,重新注册了一个网易账号,登录后,该账号就不再需要滑动验证。

那么问题来了,远程云服务器的IP怎么才能解封?云服务器没有界面,破解滑动验证码,成本太高;使用remote debug,乱码操作难度大,延迟太高,效率低下。

这里使用squid代理,在云服务器上安装squid,暴露8000端口,本机windows 通过java代码,chromedriver设置chrome的proxy地址为云服务器地址,端口8000,具体操作如下:

yum install squid
   
1.vi  /etc/squid/squid.conf,  在结尾处追加:
dns_nameservers 8.8.8.8
http_port 8000
cache_mem 60 MB  
2.注释掉默认的http_access deny all

创建squid交换目录:
cd /usr/sbin/
./squid -z

启动squid:
./squid

查看端口状态:
netstat -ntl

停止squid:
./squid -k shutdown

此时,squid已经安装并启动完毕,在windows本机,java代码里加入

ChromeOptions options = new ChromeOptions();
options.addArguments("--proxy-server=http://188.131.133.231:8000");
ChromeDriver driver = new ChromeDriver(options);

然后启动程序,打开chrome浏览器,此时打开百度,在搜索栏输入ip138,显示已经是云服务器的ip了,如此一来,本机chrome代理到云服务器上,可以手动输入滑动验证码,进行解锁。

我在这里试验了几种方式,老账号多次滑动验证通过,依然需要滑动验证,可能时间还不到。
通过新注册网易账号,登录,不需要验证码。通过。

总结

至此,考拉的验证和京东的验证都通过了,几个主要的难点及知识点

  • chrome在linxu上界面乱码原因导致问题查找走了很大弯路
  • 通过chrome remote debug定位linux chrome问题
  • 通过squid代理,将云服务器ip映射到本地,本地手动滑动验证码解锁ip
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,728评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,220评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,936评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,976评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,981评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,468评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,843评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,817评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,353评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,384评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,510评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,113评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,833评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,290评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,419评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,055评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,577评论 2 365

推荐阅读更多精彩内容

  • 用户登录三次重试 主要实现的是: 设置初始用户名和登录密码; 进入登录页面,提醒输入用户输入用户名和密码; 若用户...
    ae0fdc75017d阅读 99评论 0 1
  • 声明:以下文字均转自北京问鼎之音文化发展有限公司官方网站,转载请注明出处。 我们正处在一个多媒体时代。 而视觉和听...
    不朽华夏之魂阅读 124评论 0 0
  • 现在一切或喜或悲的经历,都会在将来的某一刻派上用场 我用这句话治愈了好多次消极的Moment,却在此刻却无济于事 ...
    Amylinnnnn阅读 166评论 0 1
  • 自虐~自燃~自律 【2018年度目标及检视完成情况】 罗列年度目标及完成进度 【月度成果&温馨时刻】 一、健康:跑...
    李玉平觉醒阅读 256评论 0 0
  • 西瓜会五分钟实用营销课股权众筹方案 [TOC] 本次融资100万元,出让股权10%,1万起投。创始人:怪木西西 电...
    怪木勇勇阅读 850评论 0 0