av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

你以為的萬能爬蟲方法,其實一行代碼就能識別!

這個方法理論上說是萬能的,因為注入的JavaScript能夠獲取當前Dom樹,任何接口簽名都無法攔截到自己注入的JavaScript代碼,如下圖所示:

創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比浉河網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式浉河網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋浉河地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

而Chrome插件訪問自己的服務器后端是沒有跨域問題的,完全可以讓插件獲取到數據以后,發(fā)送給自己的服務器,這樣就可以把數據收入囊中了。

你還可以通過JavaScript自動點擊按鈕,實現自動翻頁。所以你只需要把網頁打開,啟動插件,然后他就能自動刷新,自動獲取數據了。

這個方法看起來非常萬能,而且無法被防御……

事實真的是這樣嗎?我寫了一個Demo來做測試。Demo頁面長下面這樣:

當我手動點擊點擊我按鈕的時候,會彈出一個框:

現在,我使用JavaScript來選擇這個按鈕,然后點擊它:

為什么網站知道我在用JavaScript點擊了按鈕呢?其實只要我給你看這個頁面的HTML,你就知道了:





Test Event










關鍵的點就是這個event.isTrusted。它是瀏覽器的一個功能,如果這個事件是人通過鼠標點擊的,那么它是true。如果事件是通過JavaScript觸發(fā)的,那么它是false。

關于這個屬性,你可以查看Event.isTrusted - Web API 接口參考 | MDN[1]。這個例子里面,我用的是Vue來操作頁面,但實際上event是瀏覽器的特性,使用原生JavaScript也可以實現:

  document.querySelector("button").addEventListener("click", function( event ) {
if (event.isTrusted) {
alert('主人你好,歡迎回家!')
} else {
this.spider = true
}
}, false);

那么如何繞過這個event.isTrusted呢?其實很簡單,你使用Selenium/Puppeteer,天然就能繞過它。

看到這里,大家肯定發(fā)現一個很好笑的問題,Selenium/Puppeteer不能解決的問題,用JavaScript輕松就能解決。但JavaScript解決不了的問題,用Selenium/Puppeteer又完全沒有問題。

這就像是貓吃老鼠,老虎吃貓,大象吃老虎,但是老鼠可以吃大象。寸有所長,必有所短,寸有所短,也可能有所長。

參考文獻

[1] Event.isTrusted - Web API 接口參考 | MDN: https://developer.mozilla.org/zh-CN/docs/Web/API/Event/isTrusted

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯(lián)系未聞Code公眾號。


本文題目:你以為的萬能爬蟲方法,其實一行代碼就能識別!
本文路徑:http://uogjgqi.cn/article/djdjgcc.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流