欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

selenium 反爬蟲之跳過淘寶滑塊驗(yàn)證功能的實(shí)現(xiàn)代碼

 更新時(shí)間:2020年08月27日 10:08:30   作者:翻滾吧~CODE君  
這篇文章主要介紹了selenium 反爬蟲之跳過淘寶滑塊驗(yàn)證功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在處理問題的之前,給大家個(gè)第一個(gè)錦囊!

你需要將chorme更新到最新版版本84,下載對(duì)應(yīng)的chorme驅(qū)動(dòng) 鏈接:http://chromedriver.storage.googleapis.com/index.html
注意 劃重點(diǎn)??!一定要做這一步,因?yàn)槲矣玫?3的chorme他是不行滴,~~~~~~~

問題

1.一周前我的滑塊驗(yàn)證代碼還是可以O(shè)K的,完全沒問題!附代碼 low一眼

url = "https://login.taobao.com/member/login.jhtml"
browser.get(url)
browser.maximize_window() # 最大化

# 填寫用戶名密碼
user = '*****'
password = '*******'
time.sleep(8)

iframe = browser.find_element_by_xpath('//div[@class="bokmXvaDlH"]//iframe')
print(iframe)
browser.switch_to.frame(iframe)
browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(id)
browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(password)
time.sleep(2)
# 獲取滑塊的大小
span_background = browser.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
span_background_size = span_background.size
print(span_background_size)

# 獲取滑塊的位置
button = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
button_location = button.location
print(button_location)

# 拖動(dòng)操作:drag_and_drop_by_offset
# 將滑塊的位置由初始位置,右移一個(gè)滑動(dòng)條長(zhǎng)度(即為x坐標(biāo)在滑塊位置基礎(chǔ)上,加上滑動(dòng)條的長(zhǎng)度,y坐標(biāo)保持滑塊的坐標(biāo)位置)
x_location = span_background_size["width"]
y_location = button_location["y"]
print(x_location, y_location)
action = ActionChains(browser)
source = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
action.click_and_hold(source).perform()
action.move_by_offset(300, 0)
action.release().perform()
time.sleep(1)

# 登錄
browser.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
print('登錄成功\n')

完全可以會(huì)很好的進(jìn)入淘寶,游刃有余
2.淘寶爸爸一周后就給我潑涼水,增加了自己的反爬蟲機(jī)制,出現(xiàn)如下錯(cuò)誤。

在這里插入圖片描述

剛開始我以為是我頻繁登錄,導(dǎo)致淘寶的機(jī)器人識(shí)別我為代碼進(jìn)入。一般之前都是會(huì)在30分鐘內(nèi)解封。結(jié)果一天之后還是存在這個(gè)問題。查閱資料,翻了我的葵花寶典還是沒有解決辦法。后來看到一個(gè)文章,可能是淘寶再次更新了自己對(duì)selenium的驗(yàn)證,導(dǎo)致我不在成為漏網(wǎng)之魚。唉唉唉,導(dǎo)致我3天沒有解決?,F(xiàn)在我把自己的坑和解決辦法給大家分享一哈。成功的再次成為漏網(wǎng)之魚,哈哈哈!

步驟

1.首先很多熟悉JS的人都知道淘寶會(huì)檢測(cè)window.navigator.webdriver(js檢測(cè)特征之一),但是即使設(shè)置了"undefined"還是敗下來,看看

在這里插入圖片描述

2.這時(shí)候細(xì)心的就需要觀察一下他的全局JS,(這個(gè)是我參考別人的思路)你會(huì)發(fā)現(xiàn)淘寶爸爸在你瀏覽器內(nèi)置的JS中有這么一段恐怖的代碼

在這里插入圖片描述

就是這個(gè)標(biāo)黃色的東西,不會(huì)容易被發(fā)現(xiàn)的東西被檢測(cè)到你是selenium進(jìn)入,是不是特別坑!那我們接下來就需要干掉他。
3.這個(gè)時(shí)候仔細(xì)想一下,我們是通過什么打開瀏覽器呢?是的,知道的都會(huì)說webdriver.exe這個(gè)驅(qū)動(dòng)。那我們就從他開始下手,當(dāng)你打開webdriver.exe它后你會(huì)發(fā)現(xiàn)其中的問題!
注意:劃重點(diǎn)?。?!怎么打開和修改webdriver.exe。很多人都是亂碼,之前我看到Windows系統(tǒng)采用nodepad++去打開就可以了,注意我的不行!你們可以試一下。(有的人是可以的,但是我的老師電腦不可以),然后我就找了一個(gè)辦法,需要大家會(huì)一點(diǎn)vim操作,很簡(jiǎn)單的!準(zhǔn)確的說就是Linux去解決,因?yàn)樗淮嬖诰幋a問題,不會(huì)像傻Windows,特別蠢??!開發(fā)人員最好還是用Linux系統(tǒng)吧!
經(jīng)過我認(rèn)真不負(fù)努力的搜索,誒找到一個(gè)靠譜的文章,哈哈!外國(guó)的‘知乎'
文章鏈接:https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver
就是他!

在這里插入圖片描述

就是這段翻譯后的操作。
注意 劃重點(diǎn) ??!采用Linux系統(tǒng)的vim進(jìn)去后你看到的也是亂碼?。」?,but和Windows的亂碼是不一樣的,他會(huì)讓你找到“$cdc_asdjflasutopfhvcZLmcfl_”這個(gè)字符串的,神奇吧。這就是Linux的強(qiáng)大?。?br /> 不會(huì)Linux命令的童鞋可以自己搜索一下,很簡(jiǎn)單的。修改后記得要保存哦!

4.可能大家覺得到這里就可以了,NO NO NO 這樣子你還是登錄不掉的。需要最后一個(gè)錦囊妙計(jì)??!
具體就是 你需要關(guān)閉chorme開發(fā)者模式,關(guān)閉自動(dòng)測(cè)試狀態(tài),還需要將大家都熟知的把window.navigator.webdriver設(shè)為"undefined"??赡苷f的不太明白,圖片幫你理解

在這里插入圖片描述

# chrome_options 初始化選項(xiàng)
  chrome_options = webdriver.ChromeOptions()

  # 設(shè)置瀏覽器初始 位置x,y & 寬高x,y
  chrome_options.add_argument(f'--window-position={217},{172}')
  chrome_options.add_argument(f'--window-size={1200},{1000}')

  # 關(guān)閉自動(dòng)測(cè)試狀態(tài)顯示 // 會(huì)導(dǎo)致瀏覽器報(bào):請(qǐng)停用開發(fā)者模式
  # window.navigator.webdriver還是返回True,當(dāng)返回undefined時(shí)應(yīng)該才可行。
  chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

加上這個(gè)代碼會(huì)關(guān)閉“正受到自動(dòng)測(cè)試軟件的控制“的顯示

在這里插入圖片描述

# 通過瀏覽器的dev_tool在get頁面錢將.webdriver屬性改為"undefined"
  driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
  })

加上這個(gè)代碼可以關(guān)閉開發(fā)者模式

在這里插入圖片描述

# 通過瀏覽器的dev_tool在get頁面錢將.webdriver屬性改為"undefined"
  driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
  })

最后我們通過提前運(yùn)行js的方法,把window.navigator.webdriver設(shè)為"undefined"!
OK ??!大功告成??!通過這么一步步下來,你會(huì)發(fā)現(xiàn) 我的天居然沒有滑塊!開森??!

總結(jié)

到此這篇關(guān)于selenium 反爬蟲之跳過淘寶滑塊驗(yàn)證(2020/8)的文章就介紹到這了,更多相關(guān)selenium 跳過淘寶滑塊驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 獲取select元素被選中的文本內(nèi)容的js代碼

    獲取select元素被選中的文本內(nèi)容的js代碼

    獲取select元素被選中的文本內(nèi)容的方法有很多,本文為大家介紹下使用javascript來輕松實(shí)現(xiàn)下
    2014-01-01
  • js使用eval解析json實(shí)例與注意事項(xiàng)分享

    js使用eval解析json實(shí)例與注意事項(xiàng)分享

    eval函數(shù)在js中有不少用處了,下面我來給各位朋友介紹eval解析json的實(shí)例,基于這個(gè)實(shí)例我們引出來在eval處理json數(shù)據(jù)時(shí)的一些注意事項(xiàng),希望文章對(duì)各位同學(xué)會(huì)有所幫助
    2014-01-01
  • Echarts實(shí)現(xiàn)多條折線可拖拽效果

    Echarts實(shí)現(xiàn)多條折線可拖拽效果

    這篇文章主要為大家詳細(xì)介紹了Echarts實(shí)現(xiàn)多條折線可拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航

    JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航

    這篇文章主要介紹了JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • axios攔截器、ElementUI組件的使用方法

    axios攔截器、ElementUI組件的使用方法

    大家都知道ElementUI是"餓了么"公司推出的基于Vue2.0的組件庫,這篇文章主要介紹了axios攔截器、ElementUI組件的使用方法,需要的朋友可以參考下
    2023-01-01
  • 關(guān)于JavaScript回調(diào)函數(shù)的深入理解

    關(guān)于JavaScript回調(diào)函數(shù)的深入理解

    由于函數(shù)是一等對(duì)象,我們可以把一個(gè)函數(shù)作為參數(shù)傳遞給另一個(gè)函數(shù),然后在那個(gè)函數(shù)內(nèi)執(zhí)行,至也可以被那個(gè)函數(shù)返回,然后再執(zhí)行,這篇文章主要給大家介紹了關(guān)于JavaScript回調(diào)函數(shù)的深入理解,需要的朋友可以參考下
    2021-06-06
  • js點(diǎn)擊任意區(qū)域彈出層消失實(shí)現(xiàn)代碼

    js點(diǎn)擊任意區(qū)域彈出層消失實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了js點(diǎn)擊任意區(qū)域彈出層消失實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色選中效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • swiper4實(shí)現(xiàn)移動(dòng)端導(dǎo)航欄tab滑動(dòng)切換

    swiper4實(shí)現(xiàn)移動(dòng)端導(dǎo)航欄tab滑動(dòng)切換

    這篇文章主要為大家詳細(xì)介紹了swiper4實(shí)現(xiàn)移動(dòng)端導(dǎo)航欄tab滑動(dòng)切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • JavaScript函數(shù)定義方法實(shí)例詳解

    JavaScript函數(shù)定義方法實(shí)例詳解

    這篇文章主要介紹了JavaScript函數(shù)定義方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascript函數(shù)的聲明、定義、調(diào)用等原理與常見操作技巧,需要的朋友可以參考下
    2019-03-03

最新評(píng)論