惡意爬蟲(chóng)?能讓惡意爬蟲(chóng)遁于無(wú)形的小Tips

前言

驗(yàn)證碼是阻擋機(jī)器人攻擊的有效實(shí)踐讨越,網(wǎng)絡(luò)爬蟲(chóng)两残,又被稱為網(wǎng)絡(luò)機(jī)器人,是按照一定的規(guī)則把跨,自動(dòng)地抓取網(wǎng)絡(luò)信息和數(shù)據(jù)的程序或者腳本人弓。如何防控,這里簡(jiǎn)單提供幾個(gè)小Tips着逐。

使用nginx的自帶功能

通過(guò)對(duì)httpuseragent阻塞來(lái)實(shí)現(xiàn)崔赌,包括GET/POST方式的請(qǐng)求,以nginx為例滨嘱。

拒絕以wget方式的httpuseragent峰鄙,增加如下內(nèi)容:

Block http user agent - wget
if ($http_user_agent ~* (Wget) ) {
    return 403;
}

如何拒絕多種httpuseragent,內(nèi)容如下:

if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
    return 403;
}

限制User-Agent字段

User-Agent字段能識(shí)別用戶所使用的操作系統(tǒng)太雨、版本吟榴、CPU、瀏覽器等信息囊扳,如果請(qǐng)求來(lái)自非瀏覽器吩翻,就能識(shí)別其為爬蟲(chóng)兜看,阻止爬蟲(chóng)抓取網(wǎng)站信息。

限制IP或賬號(hào)

根據(jù)業(yè)務(wù)需求狭瞎,要求用戶通過(guò)驗(yàn)證碼后才能使用某些功能或權(quán)限细移。當(dāng)同一IP、同一設(shè)備在一定時(shí)間內(nèi)訪問(wèn)網(wǎng)站的次數(shù)熊锭,系統(tǒng)自動(dòng)限制其訪問(wèn)瀏覽弧轧。只有在輸入正確的驗(yàn)證碼之后才能繼續(xù)訪問(wèn)。

驗(yàn)證碼攔截

在登錄頁(yè)等頁(yè)面碗殷,添加驗(yàn)證碼精绎,以識(shí)別是正常流量還是惡意爬蟲(chóng),也是一種基本的操作锌妻。

HTML代碼:

<script src="captcha.js?appid=xxx"></script>
<script>
kg.captcha({
    // 綁定元素代乃,驗(yàn)證框顯示區(qū)域
    bind: "#captchaBox3",
    // 驗(yàn)證成功事務(wù)處理
    success: function(e) {
        console.log(e);
        document.getElementById('kgCaptchaToken').value = e['token']
    },
    // 驗(yàn)證失敗事務(wù)處理
    failure: function(e) {
        console.log(e);
    },
    // 點(diǎn)擊刷新按鈕時(shí)觸發(fā)
    refresh: function(e) {
        console.log(e);
    }
});
</script>

<div id="captchaBox3">載入中 ...</div>
<input type="hidden" name="kgCaptchaToken" value="" />

Python代碼:

from wsgiref.simple_server import make_server
from KgCaptchaSDK import KgCaptcha
def start(environ, response):
    # 填寫(xiě)你的 AppId,在應(yīng)用管理中獲取
    AppID = "xxx"
    # 填寫(xiě)你的 AppSecret仿粹,在應(yīng)用管理中獲取
    AppSecret = "xxx"
    request = KgCaptcha(AppID, AppSecret)
    # 填寫(xiě)應(yīng)用服務(wù)域名搁吓,在應(yīng)用管理中獲取
    request.appCdn = "https://cdn.kgcaptcha.com"
    # 請(qǐng)求超時(shí)時(shí)間,秒
    request.connectTimeout = 10
    # 用戶id/登錄名/手機(jī)號(hào)等信息吭历,當(dāng)安全策略中的防控等級(jí)為3時(shí)必須填寫(xiě)
    request.userId = "kgCaptchaDemo"
    # 使用其它 WEB 框架時(shí)請(qǐng)刪除 request.parse堕仔,使用框架提供的方法獲取以下相關(guān)參數(shù)
    parseEnviron = request.parse(environ)
    # 前端驗(yàn)證成功后頒發(fā)的 token,有效期為兩分鐘
    request.token = parseEnviron["post"].get("kgCaptchaToken", "")  # 前端 _POST["kgCaptchaToken"]
    # 客戶端IP地址
    request.clientIp = parseEnviron["ip"]
    # 客戶端瀏覽器信息
    request.clientBrowser = parseEnviron["browser"]
    # 來(lái)路域名
    request.domain = parseEnviron["domain"]
    # 發(fā)送請(qǐng)求
    requestResult = request.sendRequest()
    if requestResult.code == 0:
        # 驗(yàn)證通過(guò)邏輯處理
        html = "驗(yàn)證通過(guò)"
    else:
        # 驗(yàn)證失敗邏輯處理
        html = f"{requestResult.msg} - {requestResult.code}"
    response("200 OK", [("Content-type", "text/html; charset=utf-8")])
    return [bytes(str(html), encoding="utf-8")]
httpd = make_server("0.0.0.0", 8088, start)  # 設(shè)置調(diào)試端口  http://localhost:8088/
httpd.serve_forever()

最后

SDK開(kāi)源地址:KgCaptcha (KgCaptcha) · GitHub晌区,順便做了一個(gè)演示:凱格行為驗(yàn)證碼在線體驗(yàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贮预,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子契讲,更是在濱河造成了極大的恐慌仿吞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捡偏,死亡現(xiàn)場(chǎng)離奇詭異唤冈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)银伟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門你虹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人彤避,你說(shuō)我怎么就攤上這事傅物。” “怎么了琉预?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵董饰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卒暂,這世上最難降的妖魔是什么啄栓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮也祠,結(jié)果婚禮上昙楚,老公的妹妹穿的比我還像新娘。我一直安慰自己诈嘿,他們只是感情好堪旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奖亚,像睡著了一般崎场。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遂蛀,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音干厚,去河邊找鬼李滴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛮瞄,可吹牛的內(nèi)容都是我干的所坯。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挂捅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芹助!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闲先,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤状土,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伺糠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蒙谓,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年训桶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了累驮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舵揭,死狀恐怖谤专,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情午绳,我是刑警寧澤置侍,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響墅垮,放射性物質(zhì)發(fā)生泄漏惕医。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一算色、第九天 我趴在偏房一處隱蔽的房頂上張望抬伺。 院中可真熱鬧,春花似錦灾梦、人聲如沸峡钓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)能岩。三九已至,卻和暖如春萧福,著一層夾襖步出監(jiān)牢的瞬間拉鹃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工鲫忍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膏燕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓悟民,卻偏偏與公主長(zhǎng)得像坝辫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子射亏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容