服务器救星!Python实现反爬虫
创始人
2024-09-26 06:52:09
0

环境

Python3.12
image

安装fastapi

pip install "fastapi[all]"  

image

代码

from fastapi import FastAPI, Response from fastapi.responses import FileResponse  app = FastAPI()  @app.get('/') def index():     resp = FileResponse('data.gz')     resp.headers['Content-Encoding'] = 'gzip'  # 说明这是gzip压缩的数据,否则请求时是乱码     return resp  

VSCode选择编译器环境

Cmd+Shift+P选择 Python : Select Interpreter
image

运行服务

uvicorn server:app  

image

Uvicorn 简介

uvicorn是一个基于asyncio开发的一个轻量级高效的web服务器框架

uvicorn 设计的初衷是想要实现两个目标:
使用uvloop和httptools 实现一个极速的asyncio服务器
实现一个基于ASGI(异步服务器网关接口)的最小应用程序接口。

目前支持http, websockets, Pub/Sub 广播,并且可以扩展到其他协议和消息类型。

安装使用
uvicorn 仅支持python 3.5.3以上版本,我们可以通过pip3来快速的安装。

压缩数据包

将文本文件压缩成gz压缩包

cat hello.txt | gzip > data.gz  

image

客户端请求

import requests  resp = requests.get('http://127.0.0.1:8000/').text print(resp)  

不带resp.headers[‘Content-Encoding’] = 'gzip’时运行后乱码
image
带resp.headers[‘Content-Encoding’] = ‘gzip’ 时返回解析压缩包后的数据
image

使用压缩数据包原理

文本内容为192个1。相当于把192个字符压缩成了5个字符,压缩率高达97.4%。
可以把一个1GB的文件压缩成1MB,那么对服务器来说,仅仅是返回了1MB的二进制数据,不会造成任何影响。但是对客户端或者爬虫来说,它拿到这个1MB的数据以后,就会在内存中把它还原成1GB的内容。这样一瞬间爬虫占用的内存就增大了1GB。如果我们再进一步增大这个原始数据,那么很容易就可以把爬虫所在的服务器内存全部沾满,轻者服务器直接杀死爬虫进程,重则爬虫服务器直接死机。

mac命令

dd if=/dev/zero bs=1048576 count=1000 | gzip > boom.gz  

执行完后生成的文件只有995K,
image

linux命令

# dd: 是一个命令行工具,用于转换和复制文件。这里用来生成一个特定大小的文件。 # if=/dev/zero: 指定输入文件(if代表input file)。/dev/zero是一个特殊的文件,读取会产生无限的零(\0字符)。 # bs=1048576: bs代表“block size”,即每个块的大小。1048576字节等于1MB。这意味着dd命令在每次读写操作中处理1MB的数据。 # count=1000: 这指定dd命令需要复制的块数。因为每个块是1MB,count=1000意味着总共复制1000MB,即1GB的数据。 # | gzip: 这个部分使用管道(|)将dd命令的输出直接传递给gzip命令,后者是一个压缩工具。这意味着生成的1GB数据会被gzip压缩。 # > boom.gz: 最后,>将压缩后的数据重定向到一个名为boom.gz的文件中。如果文件已经存在,它会被覆盖;如果不存在,则会被创建。 dd if=/dev/zero bs=1M count=1000 | gzip > boom.gz  

把数据包换成boom.gz

import requests import sys  resp = requests.get('http://127.0.0.1:8000/').text print(sys.getsizeof(resp)/1024/1024+"GB")  

请求期间可以看到内存在持续的增加
image

浏览器直接请求http://127.0.0.1:8000/
image
这样在确定爬虫IP的时候拦截请求把请求重定向到这个地址即可。


最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包【点击这里】领取!

Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便
请添加图片描述

请添加图片描述

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

请添加图片描述

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

相关内容

热门资讯

玩家必看秘籍(德扑之星)外挂透... 玩家必看秘籍(德扑之星)外挂透明挂辅助插件(透视)软件透明挂(有挂爆料)-哔哩哔哩;德扑之星中的10...
二分钟透明挂!德扑ai软件购买... 二分钟透明挂!德扑ai软件购买(透视)德扑之星ai原来真实是有挂辅助挂,软件透明挂(有挂经验)-哔哩...
分享认知!hhpoker德州牛... 您好,wePOKEr这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这...
盘点一款(德州之星手游)外挂透... 盘点一款(德州之星手游)外挂透明挂辅助助手(辅助挂)软件透明挂(有挂消息)-哔哩哔哩;是一款可以让一...
一分钟了解!雀友辅助软件有哪些... 《一分钟了解!雀友辅助软件有哪些,决战血流麻将原来是有挂猫腻,揭秘教程(有挂分析)-哔哩哔哩》 雀友...
6分钟微乐!德扑之星设置,we... 6分钟微乐!德扑之星设置,wepoker看牌型,细节方法(有挂辅助nzt)-哔哩哔哩是一款可以让一直...
2分钟辅助挂!wpk德州辅助(... 您好,wpk德州这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这款游...
玩家亲测!wepoker到底有... 玩家亲测!wepoker到底有透视,WEPOKEr其实真的是有挂,分享教程(有挂软件)-哔哩哔哩;A...
必备攻略(德州免费)外挂透明挂... 您好,德州免费这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏...
透明黑科技!掌酷十三张辅助器方... 透明黑科技!掌酷十三张辅助器方法,中至五十k确实有挂辅助挂,新版2024教程(有挂教程)-哔哩哔哩;...