腾讯DeepOcean原创文章:dopro.io/reptile.htm…
在“爬虫的攻守之道(一)”中你可能已经了解到了无头浏览器的作用以及使用的方法,那么本篇文章就让我们一起用无头浏览器做点事情。是的你没有看错,我们要“搞”的对象就是百度指数这个网站,不知道你平时是否会应用到这里面的数据呢?
今天的主要目标就是使用无头浏览器登录百度指数网站,并且绕开它的人机验证,不知道你发现没有,当我们人为正常登录这个网站的时候就不会出现字母、数字或者汉字验证码,而使用无头浏览器登录的时候就会出现这些验证码,闲言少叙我们直接开始正题。
一 正常人为登录为什么不出现验证码?
我们在使用浏览器正常登录百度指数网站的时候发现一般不会弹出验证码的提示。但是如果你使用无头浏览器去登录的时候就会出现验证码,那么这两者登录的区别在哪里呢?
经过我不断的验证发现了两个问题,当我们使用无头浏览器登录的时候做一些类似于人类的操作,例如在窗口中滑动鼠标,或者改变窗口的大小,这样百度指数网站就会认为你是人为的在操作。
第二个问题就是在我们使用无头浏览器输入账号和密码的时候,我们在手动输入密码的时候或多或少的在输入字符之间都会存在时间间隔,而使用无头浏览器的时候程序会零间隔的输入,这样百度指数网站就会认为你是一个程序在输入了。
二 python无头浏览器准备
- from selenium import webdriver
- from selenium.webdriver.common.action_chains import ActionChains
- import time
- import sys
- 复制代码
word = sys.argv[1] phone = '此处是你登录百度指数网站的用户名' password = '此处是你登录百度指数网站的密码' 复制代码
在上面的代码中我们引入了一些python的库,接下来就是使用无头浏览器前的准备工作。
- #打开chrome无头浏览器
- opt = webdriver.ChromeOptions()
- opt.set_headless()
- driver = webdriver.Chrome(options=opt)
- executor_url = driver.command_executor._url
- session_id = driver.session_id
#将打开的浏览区url和session_id存储起来,提供给下一次应用 file = open('browserMsg.txt','w') file.writelines([executor_url, 'n',session_id]) file.close()
复制代码