html怎么防止修改数据,HTML防数据采集
什么是防采集
就是我們想利用爬蟲工具采集某個網站的數據(前提當然是公開合法數據),但網站不想給你采集而設置的技術阻擋措施。
常見的防止采集方案
利用輸入驗證碼框驗證,在采集某些網站過程中,要求你輸入驗證碼,否則就卡住進行不下去。這是網站最常用且最基礎的防采措施之一,它要求你必須你手動輸入驗證碼里的數字和字母,才能繼續看到更多信息或者進行下一步,以此來判斷你是機器人還是真人。
滑動圖片進行拼圖驗證,它要求你必須滑動拼圖到它指定的位置,才能通過驗證進行下一步操作。
登錄驗證,這類網站通常需要登錄才能看到更豐富的信息,否則只會展現非常有限的內容。
數據加密防采集,我們在網頁上看到的內容是真實的,但我們打開源代碼看,這段文字被已經被加密分離,這樣當我們用爬蟲工具進行數據采集時,所采集下來的數據就是各種亂碼,法整合成一段完整的文字。
反饋虛假數據,這種防止采集的方案是把虛假的數據傳遞給爬蟲工具,從而防止數據被采集。
禁止訪問網頁,主要還是看網站的防采機制設計,如果觸發了,通常的結果就是全面封鎖和禁止。比如封你的賬號、封你的IP地址。一旦被封鎖,網站會自動給你錯誤頁面或無法讓你正常瀏覽。
如何利用HTML和自定義字體(web-font)來實現數據防采集
web-font是CSS3中的一種標記 @font-face,在@font-face聲明里,你可以聲明一種字體,指定這種字體字體庫文件從網絡某個地址下載或直接引用本地的自定義字體文件。例如在css中做如下聲明:
@font-face {
font-family: "icomoon";
src: url("fonts/icomoon.woff") format("woff"),
url("fonts/icomoon.ttf") format("truetype"),
url("fonts/icomoon.eot") format("embedded-opentype"),
url("fonts/icomoon.svg") format("svg");
}
復制代碼
這樣就成功引入了icomoon這個自定義字體。
防采集原理:
使用web-font可以從網絡加載字體,因此我們可以自己創建一套字體,設置自定義的字符映射關系表。
例如設置1f345是映射字符9,1f371是映射字符2,以此類推。
當需要顯示字符9時,網頁的源碼只會是1f345,被采集的也只會是1f345,并不是9,使采集者采集不到正確的數據。而對于正常訪問的用戶則沒有影響。對于中文的防采集不適合使用web-font這種方法,因為中文的字體庫太大。而對于數字,英文則適合使用此方法實現防采集。
實例流程:
1.創建指定字符的自定義字體
首先選擇一款字體(免費且不受版權影響的字體),下載好字體可以去FONTEK這個網站快捷轉格式上傳ttf文件,點擊下方的生成,將字體文件轉為svg格式。
2.選擇需要使用的字符及設置字體映射關系
打開網址:icomoon,選擇左上角“import icons”上傳剛剛生成的svg字體,然后選擇要加密的字符進行加密,這里我選擇0-9數字進行加密,選擇完成后點擊右下角Generate Font按鈕。
把名字也按映射關系修改,設置映射關系后,點擊右下角download下載字體。然后將字體文件放到項目中,并在css中聲明引入的字體。
@font-face {
font-family: "icomoon";
src: url("fonts/icomoon.woff") format("woff"),
url("fonts/icomoon.ttf") format("truetype"),
url("fonts/icomoon.eot") format("embedded-opentype"),
url("fonts/icomoon.svg") format("svg");
}
復制代碼
然后需要定義一個css的class,font-family使用這個web-font
.number{
font-family: icomoon;
}
復制代碼
然后根據之前修改的映射表在HTML中使用各自數字對應的映射如下
🍅 🍱 🌏 🏆
復制代碼
完整HTML代碼如下:
font-family: "icomoon";
src: url("fonts/icomoon.woff") format("woff"),
url("fonts/icomoon.ttf") format("truetype"),
url("fonts/icomoon.eot") format("embedded-opentype"),
url("fonts/icomoon.svg") format("svg");
}
.number{
font-family: icomoon !important;
}
🍅 🍱 🌏 🏆
復制代碼
運行結果如下:
采集者只能獲取到類似🍅的數據,并不能知道🍅映射的字符是什么,實現了數據防采集。當然采集者可以通過分析,知道每一個映射代表的意思,從而進行采集后轉換處理。 我們可以創建多個不同的字體文件和映射表。每次訪問都隨機使用一種,并定期更新一批字體文件和映射表,加大采集的難度。 這樣采集者需要把所有的字體文件和映射表都分析并做轉換處理,才可能采集到數據,這樣采集的成本將會大大增加。(這里前端所展示的數據一般都是從后端接口獲取的,所以可以把映射關系放到后端進行處理,前端只負責展示編碼即可)
總結
以上是生活随笔為你收集整理的html怎么防止修改数据,HTML防数据采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html表单下拉美化教程,用javasc
- 下一篇: vue怎么给html元素加类选择器,Vu