當然沒有十全十美的方法。
只是在一定程度上。
比如瀏覽器端cookie驗證啦等等。。
回複內容:
當然沒有十全十美的方法。
只是在一定程度上。
比如瀏覽器端cookie驗證啦等等。。
忍不住來回答個:
簡單而言:沒有
HTTP協議所傳輸的內容都是公開的明文,cookie、referer都只是HTTP頭中的一個欄位,很容易偽造 —— 比如隨便找個python爬蟲的教程,都能輕易地加上這兩個欄位。
當然,如果加了cookie和referer校正後,不懂python爬蟲之類的人員就可以pass掉了。
感覺LZ問題沒問到點子上。很好奇為什麼要防使用者手動構造請求呢?
猜測有以下2個原因:
頁面效能不行,怕被人刷掛了
一些消耗資源的操作,比如註冊使用者,怕被人反覆操作,比如註冊了N多小號
其實,這兩個問題都很好解決:
效能不行就解決效能問題,比如使用頁面緩衝;再不濟基於IP做防刷控制
加驗證碼,加簡訊校正碼
之前看一個人公眾號推送了一個很有趣
http://mp.weixin.qq.com/s?__biz=MzA3NDM0ODQwMw==&mid=210665223&idx=1&sn=587b738b3dae0222f14feb509ce1b60f&scene=5&srcid=1010upLcP9NfCZkROIjmeJZl#rd
cookie是要有的
像是laravel之類的服務端架構為了防止csrf攻擊會為每位訪問者產生csfr字串,在提交表單時必須攜帶此串並進行驗證。
參考資料:
http://laravel.com/docs/master/routing#csrf-protection
或者可以在服務端驗證HTTP Referer欄位
你搜尋一下csrf就知道了
瀏覽器會自動執行js,curl執行不了,可以用js操作cookie來判斷是否為瀏覽器。具體的驗證規則可以自訂了
的確,沒有辦法絕對限制,只是能增加爬取得難度而已。
可以用session?
token機制
從我與各大網站鬥智鬥勇的經曆來看,方法只有兩個,一個是驗證碼,一個是限制IP。
token的話,瀏覽器之內無解。但是用爬蟲,可以先get表單的頁但是用爬蟲,可以先get表單的頁面,然後把token截取出來,用在第二次的post上面。
token + 限制來源
csrf可以做到