成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

在以前的公眾號中,我提到Selenium/Puppeteer/Pyppeteer有很多特征可以被網站檢測到。于是,有些同學想到了另一個方法,就是自己寫一個Chrome插件,在網站打開的時候,注入到頁面中,然后通過這個注入的JavaScript代碼來操作頁面,獲取數據。

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

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

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

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

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

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

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

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test Event</title>
</head>
<body>
<div id="app">
<template v-if="spider">
<div>你這個狗爬蟲</div>
</template>
<template v-else>
<button v-on:click="check">點擊我</button>
</template>
</div>
<script src="./vue.min.js"></script>
<script>
var example2 = new Vue({
el: '#app',
data: {
spider: false
},
methods: {
check: function (event) {
if (event.isTrusted) {
alert('主人你好,歡迎回家!')
} else {
this.spider = true
}
}
}
})
</script>
</body>
</html>

關鍵的點就是這個event.isTrusted。它是瀏覽器的一個功能,如果這個事件是人通過鼠標點擊的,那么它是true。如果事件是通過JavaScript觸發的,那么它是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,天然就能繞過它。

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

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

參考文獻

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

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

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-08-17 14:25:11

人臉識別人工智能身份識別

2021-04-19 10:38:06

代碼開發工具

2018-10-15 09:20:08

代碼軟件工程師

2021-11-11 10:41:25

代碼開發工具

2019-03-08 11:21:45

Windows 功能系統

2012-05-08 08:55:56

2021-03-26 13:04:50

AI

2024-12-09 09:25:30

2022-08-19 10:27:39

系統模型

2013-11-29 13:14:30

代碼網頁設計

2022-02-23 14:37:48

代碼Pythonbug

2016-12-02 08:53:18

Python一行代碼

2017-11-13 14:06:56

2020-07-20 09:20:48

代碼geventPython

2021-05-28 07:39:17

SQL代碼操作

2017-04-05 11:10:23

Javascript代碼前端

2016-11-24 12:07:42

Android萬能圓角ImageView

2020-02-19 15:02:23

代碼開發工具

2021-08-23 17:49:02

代碼開發模型

2017-10-10 11:11:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久国产精品99 gif | 一级欧美| 久久99久久99 | 一区二区三区精品视频 | 三级在线视频 | 亚洲综合久久精品 | 欧美日韩综合精品 | 国产精品99精品久久免费 | 日韩一区中文字幕 | 天天操综合网 | 一级黄色毛片免费 | 激情欧美一区二区三区中文字幕 | 久热电影 | 日本三级全黄三级a | 一级黄色片免费 | 青青草在线播放 | 国产av毛片 | 超碰操 | 91精品久久久久久久久久 | 久久精品小视频 | 天堂av中文在线 | 国产精品日韩在线观看一区二区 | 丁香婷婷久久久综合精品国产 | 中文字幕在线一区二区三区 | 国产午夜精品久久久久免费视高清 | 中文精品一区二区 | 日韩毛片网 | 狠狠爱免费视频 | 亚洲一区二区精品 | 欧美日韩亚洲系列 | 亚洲电影成人 | 中文字幕高清 | 国产激情视频网 | 欧美日韩成人在线观看 | 一区二区三区日本 | 国产高清在线 | 黄网在线观看 | 国产精品久久久亚洲 | 国产精品色 | 精品久久国产 | 97超级碰碰 |