成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:輕松排雷,爬蟲讓 Gzip 炸彈變啞炮

開發 后端
如果你發現網站返回的內容確實是gzip壓縮后的內容了怎么辦呢?這個時候,我們如何做到既不解壓縮,又能獲取到解壓以后的大小?

在昨天的文章《??一日一技:反爬蟲的極致手段,幾行代碼直接炸了爬蟲服務器??》中,我講到了后端如何使用gzip返回極高壓縮率的文件,從而瞬間卡死爬蟲。

大家都知道我的公眾號風格,兩頭得罪討好人 。昨天我幫了后端,今天我就幫幫爬蟲。作為爬蟲,如何避免踩中gzip炸彈?

最直接的方法,就是把你的爬蟲隱藏起來,因為gzip炸彈只能在發現了爬蟲以后使用,否則就會影響到正常用戶。只要你的爬蟲讓網站無法發現,那么自然就不會踩中炸彈。

如果你沒有把握隱藏爬蟲,那么,請繼續往下看。

查看gzip炸彈的URL返回的Headers,你會發現如下圖所示的字段:

你只需要判斷resp.headers中,是否有一個名為content-encoding,值包含gzip或deflate的字段。如果沒有這個字段,或者值不含gzip、deflate那么你就可以放心,它大概率不是炸彈。

值得一提的是,當你不讀取resp.content、resp.text的時候,Requests是不會擅自給你解壓縮的,如下圖所示。因此你可以放心查看Headers。:

那么,如果你發現網站返回的內容確實是gzip壓縮后的內容了怎么辦呢?這個時候,我們如何做到既不解壓縮,又能獲取到解壓以后的大小?

如果你本地檢查一個.gz文件,那么你可以使用命令gzip -l xxx.gz來查看它的頭信息:

打印出來的數據中,第一個數字是壓縮后的大小,第二個數字是解壓以后的大小,第三個百分比是壓縮率。這些信息是儲存在壓縮文件的頭部信息中的,不用解壓就能獲取到。

那么當我使用Requests的時候,如何獲得壓縮后的二進制數據,防止它擅自解壓縮?方法其實非常簡單:

import requests

resp = requests.get(url, stream=True)
print(resp.raw.read())

運行效果如下圖所示:

此時可以看到,這個大小是壓縮后的二進制數據的大小。現在,我們可以使用如下代碼,在不解壓的情況下,查詢到解壓縮后的文件大小:

import gzip
import io
import requests
resp = requests.get(url, stream=True)

decompressed = resp.raw.read()
with gzip.open(io.BytesIO(decompressed), 'rb') as g:
g.seek(0, 2)
origin_size = g.tell()
print(origin_size)

運行效果如下圖所示:

打印出來的數字轉成MB就是10MB,也就是我們昨天測試的解壓后的文件大小。

使用這個方法,我們就可以在不解壓的情況下,知道網站返回的gzip壓縮數據的實際大小。如果發現實際尺寸大得離譜,那就可以確定是gzip炸彈了,趕緊把它丟掉。


責任編輯:武曉燕 來源: 未聞Code
相關推薦

2023-10-28 12:14:35

爬蟲JavaScriptObject

2024-10-16 21:47:15

2021-09-26 05:01:55

Scrapy項目爬蟲

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2021-10-15 21:08:31

PandasExcel對象

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-12-15 22:04:11

瀏覽器重復登錄

2025-05-28 03:15:00

Scrapy數據sleep

2021-04-12 21:19:01

PythonMakefile項目

2020-12-04 06:39:25

爬蟲網頁

2022-06-28 09:31:44

LinuxmacOS系統

2021-09-13 20:38:47

Python鏈式調用

2024-11-13 09:18:09

2021-03-12 21:19:15

Python鏈式調用

2021-04-05 14:47:55

Python多線程事件監控

2022-03-12 20:38:14

網頁Python測試

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-04-19 23:29:44

MakefilemacOSLinux

2024-11-11 00:38:13

Mypy靜態類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲三区在线观看 | 成人一区二区三区视频 | 欧美日韩中文在线观看 | 久久精品国产清自在天天线 | 国产亚洲精品久久久优势 | 一区二区三区欧美在线 | 亚洲视频二区 | 亚洲男人天堂 | 亚洲美女网站 | 一本大道久久a久久精二百 国产成人免费在线 | 成人国产一区二区三区精品麻豆 | 中文字幕日韩一区 | 日韩精品中文字幕一区二区三区 | 日韩中文一区二区三区 | 亚洲精品影院 | 久久精品无码一区二区三区 | 国产一区二区a | 欧美a区| 成人欧美一区二区三区黑人孕妇 | 粉嫩一区二区三区四区公司1 | 亚洲欧洲小视频 | 成人毛片在线视频 | 久久国产一区二区三区 | 国产精品美女久久久av超清 | 在线国产视频 | 成人福利在线 | 91精品国产91久久久久久最新 | 亚洲视频一区在线观看 | 日本又色又爽又黄又高潮 | 亚洲综合二区 | 国产高清精品一区二区三区 | 黑人精品| 亚洲成人自拍 | 日韩久久久久久 | 欧美亚洲国产日韩 | 免费在线成人 | 范冰冰一级做a爰片久久毛片 | 香蕉av免费 | 欧美精品v | 欧美va大片| 久久亚洲一区 |