2017-03-05 61 views
1

我正在使用Casperjs在我的Amazon帳戶中登錄並檢索一些數據。CasperJS:Amazon無限驗證碼登錄

但有一段時間,我在登錄時獲得Captchas。因此,casperjs向我顯示驗證碼,我手動返回解決方案,以便它可以提交表單。

問題是CasperJS立即得到另一個驗證碼,這次更困難。我也解決了這個問題,但另一個驗證碼出現......等等無限期地...

我不做任何特別的事情,只是一些casperjs填寫和點擊。 Casperjs使用驗證碼解決方案在頁面中加載外部js文件,然後提交。

我確定正確的captcha是submited。 亞馬遜如何能如此確定地陷入無限循環?

回答

0

從他們的角度考慮它的外觀。他們可以告訴機器人基於鼠標和鍵盤的相互作用訪問您的帳戶。人將在搜索登錄按鈕的同時掃描頁面並隨機移動鼠標。你的腳本直接跳轉到點擊選擇器。

當一個驗證碼出現時,你填寫它。這並不證明你是一個人。這只是證明你的機器人可以提醒你一個驗證碼以供人填寫。其餘的交互都是由機器人完成的,亞馬遜完全意識到這一點。你可以隨心所欲地回答儘可能多的驗證碼,但是爲了達到這個目的而進行的交互仍然會被標記爲機器人。

你可能想要走一條不同的路線,比如有一個cookie來啓動一個CasperJS會話,而你的賬戶已經登錄了。或者,亞馬遜是否提供任何類型的API來提取你感興趣的值?

他們阻止你的機器人出於geniune愛和關注,如果這讓你感覺更好!

+0

不幸的是API不給我我需要的東西。 我嘗試了很多時間來保持來自一個連接和下一個連接的cookie,但每次它都會要求我登錄,並且似乎驗證碼在cookie中更頻繁。 有沒有一些例子可以讓人類更像互動? 我已經使用隨機暫停和點擊按鈕隨機x,y – Apoleo

0

不幸的是,這不是一門精確的科學,因此可能沒有這樣的東西作爲一個普遍的,持久的解決方案。 Amazon.com使用不同的技術來檢查您是否是機器人,包括瀏覽器指紋識別,cookie挑戰和用戶行爲分析(鼠標移動等)。

我會先嚐試隨機化一些用戶代理的一部分,只看看是否有效。而且我也會嘗試像Chromium這樣的完全無頭瀏覽器,使用Selenium來允許腳本與它交談。

我可以問你多久嘗試抓取你的帳戶?我認爲如果你每天都這樣做,這不應該成爲一件大事。

+0

一天20次,不是很均勻。 我已經隨機化了useragent和視口。 也許我可以嘗試爲指紋添加隨機插件,但我不知道要做到這一點。 或者,也許我應該玩鼠標移動,並減緩很多任何行動... 我也會嘗試慢ium,我從來沒有用過它。 – Apoleo

+0

大概每天20次是太多:(你有沒有看到隨機化用戶代理和視口後有什麼區別? –

+0

我從一開始就做到了,我從來沒有嘗試過 – Apoleo