Python

淘宝爬虫 之 登陆验证(二)

2018-12-19  本文已影响818人  煎炼

淘宝作为一大电商网站,反爬措施还是相当的完善的,在我的文章中 淘宝爬虫 之 登陆验证(一)是以cookie验证的,这次用selenium验证,用过selenium登陆淘宝的应该知道登陆页面对selenium的检测是很严格的,只要一打开就会被检测到,网上也有说用其他登陆方式登陆的(支付宝登陆),我试过,可行,不过今天说的是正常的账号密码登陆

from seleniumimport webdriver

from selenium.webdriverimport ActionChains

import time

#打开一个浏览器对象

driver = webdriver.Chrome()

#打开淘宝登陆页面

driver.get('https://login.taobao.com/member/login.jhtml')

#模拟点击到账号密码登陆

driver.find_element_by_id("J_Quick2Static").click()

#输入账号密码

driver.find_element_by_id("TPL_username_1").send_keys("账号")

password = driver.find_element_by_id("TPL_password_1").send_keys("密码")

time.sleep(1)

#模拟滑块滑动

slider = driver.find_element_by_xpath("//*[@id='nc_1_n1z']")

# 平行移动鼠标

action = ActionChains(driver)

action.drag_and_drop_by_offset(slider,500,0).perform()

#模拟点击登陆

driver.find_element_by_id("J_SubmitStatic").click()

运行这段代码会出现一个滑块,无论怎么滑,手动滑都会被检测到,因为当你用selenium打开的时候就会被淘宝后端验证出来是个机器,那么如何解决呢?当然是找到淘宝是怎么验证的了,经过在网上查找各种资料(技术大牛还是很多的);在开发者模式下输入window.navigator.webdriver会发现和正常的浏览器打开的有所不同

1-1

1-1就是selenium打开的浏览器,为true,但是正常浏览器打开的并不是true,淘宝应该就是通过这个方法检测selenium的

1-2

正常浏览器打开的是undefined或者false,那么如何修改呢?

下面我说的是一个抓包工具 fiddler,用它将登陆页面的js替换掉,换成我们修改过的js文件,将window.navigator.webdriver的值改变,就可以绕过淘宝检测了

首先找到淘宝登陆页面的js

1-3

将里面的js代码保存起来,在这个保存起来的js代码中写入我们自己的代码

Object.defineProperties(navigator,{

    webdriver:{

        get:() =>false

    }

})

1-4

然后就是替换了,打开我们的fiddler,先运行一下我们刚才无法登陆的代码,在fiddler中找到登陆页面的js,将这个js代码拖动到右边,3的位置就是我们自己js的路径

1-5

替换好js文件之后就可以运行了,就会发现登陆的滑块检测已经不会出现了,,因为滑块不会出现了,所以代码需要改变一下,

from seleniumimport webdriver

import time

#打开一个浏览器对象

driver = webdriver.Chrome()

#打开淘宝登陆页面

driver.get('https://login.taobao.com/member/login.jhtml')

#模拟点击到账号密码登陆

driver.find_element_by_id("J_Quick2Static").click()

#输入账号密码

driver.find_element_by_id("TPL_username_1").send_keys("账号")

password = driver.find_element_by_id("TPL_password_1").send_keys("密码")

time.sleep(1)

#模拟点击登陆

driver.find_element_by_id("J_SubmitStatic").click()

可以登陆成功了,再看一次window.navigator.webdriver,发现它已经变成了false了

1-6

带上selenium自动登陆页面的cookie就可以爬取数据了

上一篇 下一篇

猜你喜欢

热点阅读