乐清谧种大药房有限公司

Menu

Nginx反爬蟲(chóng): 禁止惡意UserAgent抓取網(wǎng)站

網(wǎng)站建設(shè) 錄入時(shí)間 2023-08-05 閱讀次數(shù) 無(wú)雙建站
反爬蟲(chóng)常見(jiàn)方法

    1. 根據(jù) IP 訪問(wèn)頻率封禁 IP

    2. 設(shè)置賬號(hào)登陸時(shí)長(zhǎng),賬號(hào)訪問(wèn)過(guò)多封禁
    設(shè)置賬號(hào)的登錄限制,只有登錄才能展現(xiàn)內(nèi)容
    設(shè)置賬號(hào)登錄的時(shí)長(zhǎng),時(shí)間一到則自動(dòng)退出

    3. 彈出數(shù)字驗(yàn)證碼和圖片確認(rèn)驗(yàn)證碼
    爬蟲(chóng)訪問(wèn)次數(shù)過(guò)多,彈出驗(yàn)證碼要求輸入

    4. 對(duì) API 接口的限制
    每天限制一個(gè)登錄賬戶(hù)后端 api 接口的調(diào)用次數(shù)
    對(duì)后臺(tái) api 返回信息進(jìn)行加密處理

nginx反爬設(shè)置

    站點(diǎn)配置文件

    因?yàn)閡ser-agent帶有Bytespider爬蟲(chóng)標(biāo)記,這可以通過(guò)Nginx規(guī)則來(lái)限定流氓爬蟲(chóng)的訪問(wèn),直接返回403錯(cuò)誤。
    修改對(duì)應(yīng)站點(diǎn)配置文件(注意是在server里面)

    添加紅色部分

    server {
      listen 80 default_server;
      listen [::]:80 default_server;
      index index.html index.htm index.nginx-debian.html;
      server_name _;
      location / {
        try_files $uri $uri/ =404;
      }
      #forbidden Scrapy
      if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
        return 403;
      }
      #forbidden UA
      if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|python-requests|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
        return 403;
      }
      #forbidden not GET|HEAD|POST method access
      if ($request_method !~ ^(GET|HEAD|POST)$) {
        return 403;
      }
    }

    附錄:UA收集

    FeedDemon             內(nèi)容采集
    BOT/0.1 (BOT for JCE) sql注入
    CrawlDaddy            sql注入
    Java                  內(nèi)容采集
    Jullo                 內(nèi)容采集
    Feedly                內(nèi)容采集
    UniversalFeedParser   內(nèi)容采集
    ApacheBench           cc攻擊器
    Swiftbot              無(wú)用爬蟲(chóng)
    YandexBot             無(wú)用爬蟲(chóng)
    AhrefsBot             無(wú)用爬蟲(chóng)
    YisouSpider           無(wú)用爬蟲(chóng)(已被UC神馬搜索收購(gòu),此蜘蛛可以放開(kāi)?。?jikeSpider            無(wú)用爬蟲(chóng)
    MJ12bot               無(wú)用爬蟲(chóng)
    ZmEu phpmyadmin       漏洞掃描
    WinHttp               采集cc攻擊
    EasouSpider           無(wú)用爬蟲(chóng)
    HttpClient            tcp攻擊
    Microsoft URL Control 掃描
    YYSpider              無(wú)用爬蟲(chóng)
    jaunty                wordpress爆破掃描器
    oBot                  無(wú)用爬蟲(chóng)
    Python-urllib         內(nèi)容采集
    Python-requests       內(nèi)容采集
    Indy Library          掃描
    FlightDeckReports Bot 無(wú)用爬蟲(chóng)
    Linguee Bot           無(wú)用爬蟲(chóng)
    使用python驗(yàn)證

    python驗(yàn)證

    使用requests模塊

    image.png


    使用urllib模塊

    image.png


    返回403就表示起作用了。

    b'\r\n403 Forbidden\r\n\r\n

    403 Forbidden

    \r\n
    nginx
    \r\n\r\n\r\n'

    三、整站防護(hù)設(shè)置

    image.png


      層:robots.txt

      robots是網(wǎng)站跟爬蟲(chóng)間的協(xié)議,用簡(jiǎn)單直接的txt格式文本方式告訴對(duì)應(yīng)的爬蟲(chóng)被允許的權(quán)限,也就是說(shuō)robots.txt是搜索引擎中訪問(wèn)網(wǎng)站的時(shí)候要查看的個(gè)文件。

      注意:它只是做了協(xié)議規(guī)定,是否允許將爬取的數(shù)據(jù)收錄,不影響網(wǎng)頁(yè)訪問(wèn)。

      備注:對(duì)于手動(dòng)寫(xiě)爬蟲(chóng)技術(shù)人員而言,一般都是直接忽略掉的。

       

      如果不允許所有的爬蟲(chóng)蜘蛛訪問(wèn),內(nèi)容如下:

      User-agent: *
      Disallow: /

      第二層:useragent特征攔截

      因?yàn)閡ser-agent帶有Bytespider爬蟲(chóng)標(biāo)記,這可以通過(guò)Nginx規(guī)則來(lái)限定流氓爬蟲(chóng)的訪問(wèn),直接返回403錯(cuò)誤。

      具體操作,請(qǐng)查看上面的nginx配置。

      備注:這樣可以防止一部分爬蟲(chóng)訪問(wèn),以及初級(jí)爬蟲(chóng)人員。

       

      第三層:JS發(fā)送鼠標(biāo)點(diǎn)擊事件

      有些網(wǎng)站,你從瀏覽器可以打開(kāi)正常的頁(yè)面,而在requests里面卻被要求輸入驗(yàn)證碼或者是重定向到其他的頁(yè)面。
      原理:當(dāng)點(diǎn)擊登錄時(shí),觸發(fā)js加密代碼,復(fù)雜的加密算法參數(shù)+時(shí)間戳+sig值,后臺(tái)進(jìn)行 參數(shù)+時(shí)間的限制。驗(yàn)證成功后,才可以登錄。

       

      備注:爬蟲(chóng)高手需要模擬瀏覽器行為,加載js代碼以及圖片識(shí)別,才能正常登陸。

       

      第四層:后臺(tái)接口限制

      1. 根據(jù) IP 訪問(wèn)頻率封禁 IP(注意:頻率要控制好,否則容易誤傷。)
      2. 設(shè)置賬號(hào)登陸時(shí)長(zhǎng),賬號(hào)訪問(wèn)過(guò)多封禁。
          設(shè)置賬號(hào)的登錄限制,只有登錄才能展現(xiàn)內(nèi)容 設(shè)置賬號(hào)登錄的時(shí)長(zhǎng),時(shí)間一到則自動(dòng)退出
      3.彈出數(shù)字驗(yàn)證碼和圖片確認(rèn)驗(yàn)證碼
          爬蟲(chóng)訪問(wèn)次數(shù)過(guò)多,前端彈出驗(yàn)證碼要求輸入
      4.對(duì) API 接口的限制
          每天的登錄賬戶(hù),請(qǐng)求后端 api 接口時(shí),做調(diào)用次數(shù)限制。對(duì)后臺(tái) api 返回信息進(jìn)行加密處理

       

      通過(guò)這4層設(shè)置,就可以有效的保護(hù)數(shù)據(jù)的安全了。

【版權(quán)聲明】:本站內(nèi)容來(lái)自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),供訪客免費(fèi)學(xué)習(xí)需要。如文章或圖像侵犯到您的權(quán)益,請(qǐng)及時(shí)告知,我們第一時(shí)間刪除處理!謝謝!

無(wú)雙科技
如何獲取外貿(mào)詢(xún)盤(pán)和訂單?
網(wǎng)站建設(shè)咨詢(xún):13534259410

經(jīng)典客戶(hù)案例展示

熱門(mén)服務(wù)
眾多企業(yè)的選擇

深圳無(wú)雙科技 - 專(zhuān)注于高端網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)開(kāi)發(fā)、品牌網(wǎng)站制作

咨詢(xún)電話(huà):13534259410

售后服務(wù):13534259410  (7×24小時(shí))
在線 Q Q:253849310 (售前咨詢(xún))

深圳網(wǎng)站建設(shè)咨詢(xún)
【掃一掃咨詢(xún)】
  • 掃一掃 在線咨詢(xún)
    無(wú)雙科技官方公眾號(hào)
  • 響應(yīng)式客戶(hù)端
    掃一掃 關(guān)注好友
體驗(yàn)創(chuàng)新服務(wù)

深圳無(wú)雙科技,專(zhuān)注于深圳網(wǎng)站建設(shè)、深圳網(wǎng)站設(shè)計(jì)、深圳網(wǎng)站制作。
服務(wù)客戶(hù)超3000家,一站式網(wǎng)站建設(shè)及推廣營(yíng)銷(xiāo)解決方案提供商。
我們的價(jià)值觀:誠(chéng)信、坦誠(chéng)、盡責(zé)、創(chuàng)新。期待與您合作!

您好,很高興為您服務(wù) ^_^