Cookie反爬蟲

爬蟲程序中,默認情況下,只請求HTML文本資源,這意味着它們不會主動完成瀏覽器保存Cookie操作。
- 瀏覽器工作:

  瀏覽器在請求時,自動檢查響應頭中是否存在Set-Cookie,如果存在,則保存在本地,請求時,就會帶上對應的Cookie值對服務器進行校驗,校驗成功,返回200,否則進行其它操作,如重置Cookie,返回403等。

  如果請求時,Set-Cookie不存在,服務器設置Cookie,重定向,返回403等等。

- nginx配置:

nginx中設置響應頭配置:

location /verify/cookie/index.html{
    #設置Cookie值爲 hccfm=123456789
    add_header Set-Cookie "hccfm=123456789";
    root /root/www/html;
    index /index.html;
}


nginx中校驗cookie配置:

location /verify/cookie/index.html{
    # cookie不符合要求,返回403
    if ($http_cookie !~* "hccfm=123456789"){
        return 403;
    }
    root /root/www/html;
    index index.html;
}
- Cookie 與 JavaScript結合提高反爬技術:

  爲了提高校驗,可以結合JS代碼來提高難度。這裏用到JS中的Location對象,通過JS代碼對產生規則字符串,如字符串拼接,時間戳,正則規則等。


JavaScript 設置 cookie:

document.cookie = 'hccfm='+函數返回字符+實時字符拼接


nginx 校驗 cookie:

if ($http_cookie !~* "hccfm=正則規則")

  正則規則,通過自己設計方式來編寫,如果是時間戳,可以通過當前時間與cookie的值進行差值計算,當時間差超過一定的時間(如10秒),則返回403

  對於Cookie與JavaScript的結合,因爲它實現了Cookie實時校驗,所以在解決這個問題上,我們需要獲取多個Cookie值進行對比,進行分析。找到其中的規律,進行請求的Cookie僞造。

提示:

在nginx時間戳差值計算時,nginx無法獲取當前時間戳,可以通過nginx中名爲 ngx_http_lua_module 的模塊。使用Lua語言嵌入到nginx中進行獲取。

-帶用戶過濾的反爬技術:

   除了上述的操作之外,用戶行爲也是非常見的,在採集數據時,需要用戶登陸,用戶權限等,這時也需要用到Cookie的校驗操作。


頁面校驗過程:

  1. 客戶端通過POST請求,將用戶名與密碼發送到服務器;
  2. 服務器接收請求,獲取用戶名與密碼在數據庫中進行校驗;
  3. 校驗成功,設置用戶Cookie;返回200,失敗,其它操作;

對於以上行爲,看程度員的騷操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章