爬虫框架Scrapy 之(七) --- scrapy代理植入

获取代理

  在网上搜索代理网站(代理精灵、极光代理)。获取代理后,

  在爬虫项目中新建一个爬虫脚本文件,用来抓取下来代理网站上获取的代理。然后存入redis数据库

  • crawlippool.py
 1 import requests
 2 import redis
 3 import json
 4 url = "http://t.11jsq.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&qty=50&time=1&pro=&city=&port=1&format=json&ss=5&css=&ipport=1&et=1&pi=1&co=1&dt=1&specialTxt=3&specialJson="
 5 
 6 def update_ippool():
 7     res = requests.get(url=url)  # 发起一个request请求
 8     rds = redis.StrictRedis(host="39.106.191.15",port=6379,db=9)  # 链接redis数据库
 9     dic = json.loads(res.text)   # 反序列化
10     for item in dic["data"]:
11         rds.lpush("ippool",item) # 将数据存入redis,ippool 代理池
12         print("代理%s已经入库" % item)
13 if __name__ == '__main__':
14     update_ippool()

设置开启

  在settings.py文件中开启中间件设置

  • settings.py
1 DOWNLOADER_MIDDLEWARES = {
2     "scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware":None, # 关闭系统代理中间件
3    'DushuPro.middlewares.ProxyDownloaderMiddleware': 543, # 开启自定义中间件
4 }

使用代理

  在中间件中新定义一个类,来实现用代理爬取数据

  • middlewares.py
 1 from scrapy import signals
 2 from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware
 3 import redis
 4 import random
 5 import json
 6 import requests
 7 from  crawlIppool import update_ippool
 8 
 9 # 重写系统的代理类
10 class ProxyDownloaderMiddleware(object):
11     def __init__(self):
12         # 创建一个redis链接
13         self.rds = redis.StrictRedis(host="39.106.191.15", port=6379, db=9)
14         self.ippool = self.get_ippool() # 获取代理到ippool代理池
15 
16     # 定义一个函数用于从redis数据库中提取代理ip
17     def get_ippool(self):
18         len = self.rds.llen("ippool") #使用ip。获取此库的长度
19         proxies = self.rds.lrange("ippool",0,len) # 获取ip,从0到len之间提取
20         return proxies  # 返回出去代理
21 
22     # 重写中间的请求函数
23     def process_request(self, request, spider):
24         # 从代理池中随机的取出一个代理
25         ip = random.choice(self.ippool)
26         print("当前代理为:",ip)
27         try:
28             # 尝试一下ip代理有没有问题
29             ip_agnet = json.loads(ip.decode("utf-8").replace("'","\""))
30             # 验证代理是否失效
31             # requests.get(url="http://www.baidu.com",proxies={"https":ip_agnet['IP']})
32 
33             # 给request下载器加代理
34             print("http://" + ip_agnet["IP"])
35             request.meta["proxy"] = "http://" + ip_agnet["IP"]
36 
37         except Exception as e:
38             print("代理--%s--已过期!"%ip_agnet)
39             # 从代理池中删除
40             self.ippool.remove(ip)
41             # redis服务器中也要删除
42             self.rds.lrem("ippool",value=ip)
43             # 当代理池中的代理小于10的时候更新一次代理池
44             if len(self.ippool) <= 10:
45                 self.ippool += self.get_ippool()
46             # 当数据库中代理个数小于20的时候更新一次数据库
47             if self.rds.llen("ippool") <= 20:
48                 update_ippool()  # 获取代理的脚本函数

 

转载于:https://www.cnblogs.com/TMMM/p/11370994.html

大模型安全(三十五):核心技术栈之Scrapy分布式爬虫与训练数据投毒检测 本文提出基于Scrapy框架构建分布式语料审计系统,用于保障大模型训练数据安全。通过自定义中间件实现实时数据投毒检测,集成正则表达式匹配后门触发词、PII敏感信息等功能。结合Scrapy-Redis构建可扩展的爬虫集群,在数据采集阶段即拦截污染源,形成大模型数据供应链的安全防线。系统支持百万级URL处理,在爬取过程中完成自动化“安全体检”,为模型训练提供清洁数据。 阅读详情

相关推荐

Python网络爬虫在恶意网站URL检测系统中的应用

随着互联网技术的快速发展,网络安全问题日益突出,恶意网站和钓鱼网站对用户的信息安全和财产安全构成了严重威胁。本文基于Python网络爬虫技术,设计并实现了一个恶意网站URL检测系统。该系统通过爬取大量URL特征数据,结合机器学习分类算法,能够有效识别钓鱼网站和恶意网站。文章详细介绍了系统的设计思路、实现过程以及关键技术,包括使用最新的Selenium和Playwright进行动态网页爬取、Scrapy框架进行高效数据采集、以及多种机器学习模型进行恶意URL检测。

2201_76125261的博客 626

在scrapy框架中如何设置开放代理池达到反爬的目的

我们在随机爬取某个网站的时候,比如对网站发出成千上万次的请求,如果每次访问的ip都是一样的,就很容易被服务器识别出你是一个爬虫。因此在发送请求多了之后我们就要设置ip代理池来随机更换我们的ip地址,使服务器不那么容易去识别。那么如何在scrapy框架中如何设置ip代理池呢? 事先声明:在阅读本文之前,要对python爬虫和scrapy框架有一定的了解!!!

liumengqi11的博客 1435

实战:批量抓取免费代理IP全流程(附自动验证+失效剔除,爬虫抗封必备)

本文分享了一套从免费代理IP中筛选可用高匿代理的实用方案。作者通过半年实践,总结出"批量抓取+精准验证+动态维护"的方法,能从2000条免费IP中筛选出30-50条可用代理,满足中小规模爬虫需求。 方案包含四个核心环节: 多源代理抓取:针对快代理、西刺代理等不同网站定制解析规则 三层验证机制:检查有效性、匿名度和响应速度 代理池自动维护:实时淘汰失效IP Scrapy整合实战:提供可直接复用的代码 文章特别指出免费代理的三大痛点:存活率低(80%10分钟内失效)、匿名性差(仅5%是高匿代

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1602

scrapy框架下设置代理ip

问题:在使用框架进行爬取的时候报了405错误 解决方法: 使用芝麻代理ip在框架中进行设置 1.先在芝麻代理ip中进行注册 2.联系客服会给你充值让进行测试 3.点击生成api 4.在自己爬虫的middleware中加入代理类 5.在settings文件中进行配置,在DOWNLOADER_MIDDLEWARES中加入自己写的代理 6.运行自己爬虫,问题解决 ...

xutengfei999的博客 1797

Python 爬虫高级实战:开源爬虫框架二次改造实战

开源爬虫框架凭借成熟的调度机制、请求封装、中间件体系与分布式适配能力,成为企业级爬虫开发的基础底座,但原生框架普遍存在冗余功能过多、反爬适配薄弱、业务耦合度低、资源管控缺失、日志体系简陋、不兼容私有业务接口等问题。直接原生上线无法满足工程化采集、定制化反爬、权限管控、数据格式适配、集群协同等实际业务需求,必须进行深度二次改造与架构定制。本文聚焦主流开源爬虫框架的架构拆解、模块裁剪、中间件重写、反爬组件植入、存储层适配、调度逻辑改造、日志告警重构、权限模块接入、打包私有化部署。

2503_91057718的博客 1073

基于Scrapy框架构建京东商品与评论数据爬虫系统实战指南

网络爬虫技术是自动化获取互联网公开数据的关键工具,其核心原理是通过模拟浏览器请求,解析网页结构或API接口返回的数据。在电商分析、市场研究等领域,稳定高效的数据采集系统具有极高的技术价值,能够为价格监控、竞品分析和口碑评估提供可靠的数据源。面对电商平台日益复杂的反爬机制,如请求头校验、动态参数和滑块验证,构建一个健壮的爬虫系统需要体系化的工程实践。本文以Python的Scrapy框架为基础,详细阐述了如何设计一个模块化、韧性优先的爬虫架构,通过实现随机User-Agent池、代理IP中间件、以及针对京东商品

weixin_32183107的博客 295

Scrapy学习篇(十二)之设置随机IP代理(IPProxy)

当我们需要大量的爬取网站信息时,除了切换User-Agent之外,另外一个重要的方式就是设置IP代理,以防止我们的爬虫被拒绝,下面我们就来演示scrapy如何设置随机IPProxy。设置随机IPProxy同样的你想要设置IPProxy ,首先需要找到可用的IPProxy ,通常情况下,一些代理网站会提供一些免费的ip代理,但是其稳定性和可用性很难得到保证,但是初学阶段,只能硬着头皮去找了,当然后期...

xiaotwins的博客 3万+

Python 3.6安装包与爬虫开发实战指南

htmltable {th, td {th {pre {简介:Python是一种广泛应用于Web开发、数据分析、人工智能和网络爬虫的高级编程语言。Python 3.6作为重要版本,引入了f-string、类型注解、asyncio改进和有序字典等新特性,显著提升了代码可读性与执行效率。

weixin_36059856的博客 1944

构建稳健网络爬虫:从Robots协议到分布式限流的防失控实践

网络爬虫作为数据采集的基础技术,其核心原理是通过自动化程序模拟浏览器请求,实现对网页内容的抓取与解析。在技术价值层面,爬虫支撑着搜索引擎、市场分析、舆情监控等关键应用,成为互联网数据流动的重要基础设施。然而,不当的爬虫行为可能导致服务器资源过载、服务中断等风险,因此构建具备自律机制的爬虫系统至关重要。从工程实践角度,这需要综合运用Robots协议解析、请求频率控制、分布式限流等技术手段,确保爬虫在高效运行的同时保持对目标网站的友好性。本文以Scrapy框架为例,深入探讨如何通过架构设计防止爬虫失控,涵盖从基

weixin_33991418的博客 868

scrapy-redis 分布式爬虫demo 全站

分布式爬虫的一个demo,对186信息网站全站爬取。仅提供学习。其他责任不在本人。一小时7-8万有效

Simulink与C/C++的无缝对接:自定义结构体变量导入实战指南

本文详细介绍了如何将C/C++自定义结构体导入Simulink环境,实现无缝数据对接。通过编写标准C头文件、配置MEX编译环境(如MinGW),并利用`Simulink.importExternalCTypes`函数,可将结构体转换为Simulink Bus对象,从而提升复杂系统模型的可读性、可维护性及仿真与代码生成效率。

weixin_29093017的博客 481

爬虫工程师的进阶一览图(爬虫工程师水平对照表)根据崔庆才崔大神的文章总结的

根据崔大神的文章总结的爬虫水平对照表 一、初级水平 Python 【语言基础】 requests 【请求相关】 lxml【解析相关】 XPath 【解析相关】 BeautifulSoup【解析相关】 PyQuery 【解析相关】 MySQL 【数据库】 MongoDB【数据库】 Elasticsearch【我没用过这个,不清楚用到他什么特性】 Kafka【消息队列相关...

Pythoner的博客 8841

加密算法:深度解析Ed25519原理

在 Solana 开发过程中,我一直对 Ed25519 加密算法 如何生成公钥、签名以及验证签名的机制感到困惑。为了弄清这一点,我查阅了大量相关资料,终于对其流程有了更清晰的理解。在此记录实现过程,方便日后查阅。

盹猫的博客 1万+

scrapy 集成到 django(三) - 代理中间件

项目地址: recruitment 中间件 虽然 代理 两字在前,但本文的重点是 中间件, 利用好了中间件,算是在掌握 scrapy 的道路上迈进了一大步. 首先看看 scrapy 的架构 如图所示: 详细的官方解释可参考: scrapy架构 在这里,我们注意到 Downloader-MiddleWare ,它是在 Request(请求) 和 Response(响应) 路上的一环. 假如你是一名...

weixin_30824277的博客 202

Ardupilot二次开发(二):自定义mavlivk消息

在下面的文件添加自定义消息的xml定义然后编译固件,会生成相应的消息头文件。

超维空间科技的博客 2314

k230 +canMV+ LVGL控件 仿手表表盘触摸屏滚动、选中后弹窗效果完整示例程序

现在智能手表用的越来越多,其交互方式比较有特点,现在k230开发板上,基于LVGL(Light and Versatile Graphics Library)编写一个嵌入式GUI应用程序,使用LVGL配合触摸屏实现模仿智能手表的表盘滚动效果,实际效果如下:程序使用LVGL图形库和MediaManager程序,创建带有触摸屏交互的GUI应用。程序主要功能包括显示初始化、LVGL初始化、创建GUI界面(包含一个可滚动的按钮列表,每个按钮点击会弹出消息框),以及处理触摸屏输入。

weixin_47446386的博客 1175

爬虫的学习路径

学习爬虫需要怎样的学习路径,我是这样的认为的

nie_yunfei的专栏 879

PCIe(Peripheral Component Interconnect Express)的带宽和速率

PCIe带宽与速率解析 PCIe的速率指物理层传输速度(GT/s),而带宽是实际有效数据吞吐量(GB/s)。不同PCIe版本采用不同编码方式: PCIe 1.0-2.0:8b/10b编码(80%效率) PCIe 3.0+:128b/130b编码(≈98.5%效率) 单向峰值带宽速查(单位:GB/s): 版本 x1 x4 x8 x16 PCIe3 0.98 3.94 7.88 15.75 PCIe4 1.97 7.88 15.75 31.51 PCIe5 3.94 15.75 31.51 63.02 PCIe

MHD0815的博客 347

轻量Java开发环境实战:从VS Code到JDT LS的三层演进

Java开发环境正经历从重型IDE向模块化工具链的范式转移。核心在于理解IDE本质——并非功能堆砌,而是代码解析(PSI/AST)、调试协议(JDWP/JDI)与语言服务(LSP)的技术组合。轻量化不是简单禁用插件,而是基于JDK、JBR和Eclipse JDT Core等开源组件,构建可裁剪、可审计、可预测的开发基础设施。VS Code + Java Extension Pack凭借JDT Language Server实现毫秒级补全与高准确跳转,Spring Boot Tools 1.32+已原生支持A

weixin_34122810的博客 208

论文翻译:arxiv-2023 Do-Not-Answer: A Dataset for Evaluating Safeguards in LLMs

随着大型语言模型(LLMs)的快速发展,出现了新的、难以预测的有害能力。这要求开发者能够通过评估“危险能力”来识别风险,以便负责任地部署LLMs。在这项工作中,我们收集了第一个开源数据集,用于评估LLMs中的安全保障,并以低成本部署更安全的开源LLMs。我们的数据集经过策划和筛选,只包含负责任的语言模型不应遵循的指令。我们注释并评估了六个流行的LLMs对这些指令的响应。基于我们的注释,我们继续训练了几个类似BERT的分类器,并发现这些小型分类器在自动安全评估上能够取得与GPT-4相当的成果。

CSPhD-winston的博客 1131

SpringCloud Alibaba - Seata 实现高可用和异地容灾

这里不仅仅要实现高可用,还需要实现异地容灾. 异地容灾就是说,如果你整了好几个节点部署起来,全部放到一个机房里面,那么如果这个机房出了故障,就意味着整个集群就完了,所以对于一个大型的集群来讲,都会把这些服务异地部署.问题2:如果我们要实现异地容灾,也就说某一个机房挂了,需要快速的切换到另一个可用的机房,但是这个配置在配置文件中写死了,如果要改配置文件,还需要重启服务器,这是我们不希望看到的,怎么办?进入 seata/bin 目录,运行 seata-server.bat 文件,默认端口为 8091。

CYK_byte的博客 975

客户画像与网络痕迹:主流数据采集技术与工具

摘要:构建精准客户画像依赖于多种数据采集技术与工具。用户行为分析工具(如Google Analytics、Mixpanel)追踪用户交互行为;网络爬虫(如Scrapy、Octoparse)采集公开网页数据;数据埋点技术(如Sentry)记录关键操作日志。这些技术协同作用,帮助企业全面收集用户网络痕迹,通过数据分析揭示行为规律,为个性化服务和产品优化提供支持。在数字化时代,掌握这些工具将显著提升企业的市场竞争力和用户洞察能力。(149字)

2401_88470328的博客 1120

PDBfixer:蛋白质结构修复工具

本文介绍蛋白质数据银行(PDB)文件常见问题及修复工具PDBFixer的使用方法。PDB文件常存在缺失原子、残基等问题,PDBFixer可通过GUI、命令行或Python API实现自动化修复。文章详细说明安装方法、命令行参数、Python脚本修复流程及非标准残基替换表,并与Modeller、ColabFold和Rosetta Remodel等其他修复工具进行对比分析,提供了各工具的特点、适用场景和典型计算时间比较,帮助用户根据具体需求选择合适的修复工具。

Protein Designer的博客 611

Selenium竞品价格监控爬虫(代理防封版)

在电商竞争白热化的今天,实时掌握对手定价策略成为制胜关键。本代码基于Selenium构建了一套智能价格监控系统,专为应对动态渲染网站的反爬机制而生。通过集成代理IP轮换、UA伪装和无头浏览器技术,突破电商平台封锁,实现主流平台的价格精准抓取。系统自动记录时间戳并存储至CSV,为企业提供竞品价格波动的一手数据,助力快速决策。

weixin_44617651的博客 519

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Gerapy爬虫框架安全指南:如何防御CVE-2021-32849这类命令注入漏洞

本文以CVE-2021-32849远程命令执行漏洞为例,深度剖析Gerapy爬虫框架的安全风险,并提供从代码修复到企业级防御体系的完整加固方案。文章详细讲解了如何通过参数化调用、严格输入验证、最小权限原则及安全配置,有效防御命令注入攻击,为构建安全的爬虫管理系统提供实战指南。

c8d9e0f1的博客 473

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 爬虫框架Scrapy 之(六) --- scrapy增量爬虫
下一篇: 爬虫框架Scrapy 之(八) --- scrapy分布式部署
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值