使用selenium自动化登陆tb

背景

前些日子学习了爬虫,尝试使用selenium自动化登陆淘宝,但淘宝现在的反爬虫技术能识别selenium等浏览器自动化使登陆界面出现滑块。根据网上的资料,可以在后台找出检测浏览器的js脚本进行屏蔽干扰,但本文没有完善这一功能。

准备工作

  • 需要浏览器(本文使用chrome)
  • 需要浏览器对应的驱动(需要自行下载,驱动版本与浏览器版本需要对应一致)
  • python3.6 + selenium

简易的selenium教程

导入selenium库

from selenium import webdriver
import time

配置浏览器选项

首先是新建一个浏览器配置对象

options = webdriver.ChromeOptions()
options.add_argument('headless')# 使用后台进行浏览器模拟
options.add_argument('--disable-gpu')# 关闭gpu渲染
options.add_argument('--proxy-server=http://"+ip)# 使用ip进行模拟

创建浏览器对象

address = './chromedriver.exe'# chrome驱动
broswer = webdriver.Chrome(chrome_options = options, executable_path= address)# 创建浏览器对象
time.sleep(1)# 设置操作间隔

进入页面并递交账号密码

selenium可以根据xpath、id等多种方式定位网页元素
使用浏览器选定所要的元素,右键检查,然后在出现html代码中右键即可复制xpath、id等信息

id = 'xxx'
password = 'xxx'
url = 'https://login.taobao.com/member/login.jhtml'# 淘宝登陆的url
broswer.get(url)# 进入登陆界面
broswer.find_element_by_xpath('//*[@id="login-form"]/div[1]/div[2]').click()# 定位登陆账号框
broswer.find_element_by_id('fm-login-id').send_keys(id)# 定位输入框,并输入id
broswer.find_element_by_id('fm-login-password').send_keys(password)# 定位输入框,并输入password
# 判断是否需要滑块
if broswer.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span'):
				print("需要滑块")

broswer.close()# 关闭浏览器

后记

现在各大互联网对爬虫的封杀十分严重,要绕过检测脚本只能通过后台屏蔽,或者使用requests爬虫,但是requests需要提交的密码进行了加密,即我们需要知道加密算法才能正确提交。