安全测试工具,自动发现网站所有URL!

作为一个安全测试人员来说,首先要拿到网站所有url,然后根据拿到的url进行渗透测试进行漏洞挖掘。本文给大家介绍的是如何拿到一个网站所有的url。

深度爬取层级控制

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

整体架构图

相信大家对深度控制和架构已经有基本了解,剩下的代码大家直接来看。非常易懂,不妨来试试。(下一次来给大家说一下代理池的创建,让你的Spider不被封)、

from lxml import html
import requests
import re
import pymysqlfrom search_ip import search_ip
###############代理###########def get_proxy():return requests.get("http://127.0.0.1:5010/get/").contentdef delete_proxy(proxy):requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))def html_prase(url):r = requests.get(url).contentreturn html.fromstring(r)def url_is_correct():'''使用requests.get方法判断url是否正确,并返回url:return:'''url = "https://www.wuage.com" #网站入口requests.get(url)return urlurl = url_is_correct()   #将验证为正确的url地址赋值给urldef url_protocol(url):'''获取输入的url地址的协议,是http、https等'''print('该站使用的协议是:' + re.findall(r'.*(?=://)',url)[0])return re.findall(r'.*(?=://)',url)[0]urlprotocol = url_protocol(url)def same_url(url):'''处理输入的url,判断是否为同一站点做准备,爬取的时候不能爬到其它站'''#将完整的url中的http://删除url = url.replace(urlprotocol + '://','')if re.findall(r'^www',url) == []:sameurl = 'www.' + urlif sameurl.find('/') != -1:sameurl = re.findall(r'(?<=www.).*?(?=/)', sameurl)[0]else:sameurl = sameurl + '/'sameurl = re.findall(r'(?<=www.).*?(?=/)', sameurl)[0]else:if url.find('/') != -1:sameurl = re.findall(r'(?<=www.).*?(?=/)', url)[0]else:sameurl = url + '/'sameurl = re.findall(r'(?<=www.).*?(?=/)', sameurl)[0]#print('同站域名地址:' + sameurl)return sameurldomain_url = url'''
处理url的类,对已访问过的和未访问过的进行记录,待后续使用
'''
class linkQuence:def __init__(self):self.visited = []    #已访问过的url初始化列表self.unvisited = []  #未访问过的url初始化列表def getVisitedUrl(self):  #获取已访问过的urlreturn self.visiteddef getUnvisitedUrl(self):  #获取未访问过的urlreturn self.unvisiteddef addVisitedUrl(self,url):  #添加已访问过的urlreturn self.visited.append(url)def addUnvisitedUrl(self,url):   #添加未访问过的urlif url != '' and url not in self.visited and url not in self.unvisited:return self.unvisited.insert(0,url)def removeVisited(self,url):return self.visited.remove(url)def popUnvisitedUrl(self):    #从未访问过的url中取出一个urltry:                      #pop动作会报错终止操作,所以需要使用try进行异常处理return self.unvisited.pop()except:return Nonedef unvisitedUrlEmpty(self):   #判断未访问过列表是不是为空return len(self.unvisited)class Spider():'''爬取程序'''def __init__(self,url):self.linkQuence = linkQuence()   #引入linkQuence类self.linkQuence.addUnvisitedUrl(url)   #并将需要爬取的url添加进linkQuence对列中self.current_deepth = 1    #设置爬取的深度def getPageLinks(self,url):'''获取页面中的所有链接'''sel = html_prase(url)pageLinks = sel.xpath('//a/@href')return pageLinksdef processUrl(self,url):'''处理相对路径为正确的完整url'''true_url = []for l in self.getPageLinks(url):if re.findall(r'//',l):if re.findall('https://',l) or re.findall('http://',l):true_url.append(l)elif not re.findall('@',l):#true_url.append(urlprotocol + '://' + domain_url + l)true_url.append(urlprotocol+':' + l)# for l in true_url:#     print(l)return true_urldef sameTargetUrl(self,url):'''判断是否为同一站点链接,防止爬出站外。'''same_target_url = []for l in self.processUrl(url):if re.findall(domain_url,l):same_target_url.append(l)#print(self.same_target_url)return same_target_urldef unrepectUrl(self,url):'''删除重复url,排除指定域名'''unrepect_url = []expect_domain = ['s.wuage.com','static.wuage.com','shop.wuage.com','img.wuage.com','medici.wuage.com','buyer.wuage.com','item.wuage.com']for l in self.sameTargetUrl(url):if l not in unrepect_url and l.split('//')[1].split('/')[0] not in expect_domain:unrepect_url.append(l)return unrepect_urldef crawler(self,crawl_deepth=1):'''依据深度进行爬取层级控制'''#while self.current_deepth <= crawl_deepth:while self.current_deepth <= crawl_deepth:visitedUrl = self.linkQuence.popUnvisitedUrl()if visitedUrl is None or visitedUrl == '':continueself.getPageLinks(visitedUrl)links = self.unrepectUrl(visitedUrl)self.linkQuence.addVisitedUrl(visitedUrl)for link in links:sel_link = html_prase(link)print(link)self.linkQuence.addUnvisitedUrl(link)self.current_deepth += 1return self.linkQuence.visitedif __name__ == '__main__':spider = Spider(url)spider.crawler(3)

作者:胡歌,互联网公司运维技术负责人,拥有10年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ospf选路

问题描述 R6通过主备份路径访问LSP&#xff08;R1&#xff09;&#xff0c;主为R2&#xff0c; 备为R3 解决方案 路由器1看作LSP&#xff0c;配置loopback 0 ,地址为1.1.1.1 供测试使用&#xff1b;路由器 236, LSW4和LSW5&#xff0c; 运行ospf处于相同区域&#xff0c;建立…

Redis核心知识点总结

1.Redis介绍 Redis 是 NoSQL&#xff0c;但是可处理 1 秒 10w 的并发&#xff08;数据都在内存中&#xff09; 使用 java 对 redis 进行操作类似 jdbc 接口标准对 mysql&#xff0c;有各类实现他的实现类&#xff0c;我们常用的是 druid 其中对 redis&#xff0c;我们通常用 J…

16、XSS——会话管理

文章目录 一、web会话管理概述1.1 会话管理1.2 为什么需要会话管理&#xff1f;1.3 常见的web应用会话管理的方式 二、会话管理方式2.1 基于server端的session的管理方式2.2 cookie-based的管理方式2.3 token-based的管理方式 三、安全问题 一、web会话管理概述 1.1 会话管理 …

加速度jsudo:IC商城系统4.0版正式发布 PCB计价电子元器件商城

近日&#xff0c;在加速度软件新品会发布会上&#xff0c;Mike正式公布了其4.0版本的电子元器件商城系统&#xff0c;展示了迭代后的强大新功能。在招募了数十家元器件销售、运营和老板测试体验后&#xff0c;获得了大家一致的好评。其中&#xff0c;中国电子南京某子公司董事长…

VMware虚拟机系统CentOS镜像的下载

文章目录 阿里云下载官网下载参考文档 一些小版本可能过时或者其他原因已经不能存在了&#xff0c;只有大版本号最新的&#xff0c;或者其他最新版本 阿里云下载 1-百度搜索&#xff1a;阿里云 2-找到开发者社区 3-找到下载&#xff0c;选择镜像 4-选择系统 5-点击镜像地…

vivado时序方法检查3

TIMING-7 &#xff1a; 相关时钟间无公共节点 时钟 <clock_name> 与 <clock_name> 之间相互关联 &#xff08; 一起定时 &#xff09;&#xff0c; 但两者间无公共节点。此设置在硬件中可能失败。要查找这些时钟之间的时序路径&#xff0c; 请运行以下命令 &a…

岚图追光PHEV 25.28万元起售,开卷混动豪华轿车

作者&#xff5c;Amy 编辑&#xff5c;德新 12月5日晚&#xff0c;2023岚图科技日上&#xff0c;岚图汽车正式发布了其新一代SOA电子电气架构天元架构&#xff0c;并宣布了以“新行政电动旗舰”为定位的岚图追光PHEV正式上市。 岚图追光PHEV是岚图汽车旗下首款电混轿车&#x…

selenium自动化测试:xpath八种定位方式!

01、前言 如果可以的话&#xff0c;请先关注&#xff08;专栏和账号&#xff09;&#xff0c;然后点赞和收藏&#xff0c;最后学习和进步。你的支持是我继续写下去的最大动力&#xff0c;个人定当倾囊而送&#xff0c;不负众望。谢谢&#xff01;&#xff01;&#xff01; 1.…

【springboot】整合redis和定制化

1.前提条件:docker安装好了redis,确定redis可以访问 可选软件: 2.测试代码 (1)redis依赖 org.springframework.boot spring-boot-starter-data-redis (2)配置redis &#xff08;3&#xff09; 注入 Resource StringRedisTemplate stringRedisTemplate; 这里如果用Autowi…

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull&#xff08;安装镜像&#xff09;images&#xff08;查看镜像&#xff09;run&#xff08;创建容器&#xff09;删除容器exec&#xff08;进入运行中的容器&#xff09;常用命令 总结如有启发&#xff0c;可点赞收藏哟~ 前言 ht…

Python 进阶(十三):JSON 序列化和反序列化(json 模块)

大家好&#xff0c;我是水滴~~ 本篇文章主要介绍json模块的功能&#xff0c;包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象&#xff0c;将JSON字符串反序列化为Python对象、反序列化时类型的对照表…

2023中医药国际传承传播大会在深圳召开

12月2日&#xff0c;2023中医药国际传承传播大会在深圳召开&#xff0c;大会由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会主办&#xff0c;世界针灸学会联合会健康传播工作委员会、中新雅视文化发展有限公司公司与深圳巨邦传媒集…

播放pcap抓包文件中的amr-wb、amr-nb、evs声音

前言 由于wireshark并不能解析amr-wb、evs数据&#xff0c;所以也就没办法播放响应的音频。在遇到问题时&#xff0c;想还原抓包的数据是否正常就很难受。为了解决这个问题&#xff0c;我看了RFC4867&#xff0c;想着自己写一个解包小工具&#xff0c;最后彻底放弃。。感觉太复…

Qt Creator :Analyze heob 使用教程

功能&#xff1a;在windows系统上检测和调试软件代码的内存泄漏情况&#xff1b; 使用环境 &#xff1a;需要下载 heob和dwarfstack 把dwarfstack动态库放在heob的执行程序目录下 使用步骤&#xff1a; 第三步&#xff1a;配置启动调试程序 第四步&#xff1a;配置heob的路…

什么因素会影响葡萄酒陈酿的能力?

糖、酸和酚类与水的比例是葡萄酒陈酿程度的关键决定因素&#xff0c;收获前葡萄中的水分越少&#xff0c;产生的葡萄酒就越有可能具有一定的陈酿潜力。那么葡萄品种、气候和葡萄栽培实践的过程就相当重要了&#xff0c;对陈酿的时间发挥了重要的作用。皮较厚的葡萄品种&#xf…

C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字&#xff01;&#xff01;&#xff01; 不是下面&#xff1a;输入在一行中给出 10 个非负整数&#xff0c;顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50&#xff0c;且至少拥有 1 个非…

Python自动化测试之破解图文验证码

对于web应用程序来讲&#xff0c;处于安全性考虑&#xff0c;在登录的时候&#xff0c;都会设置验证码&#xff0c; 验证码的类型种类繁多&#xff0c;有图片中辨别数字字母的&#xff0c;有点击图片中指定的文字的&#xff0c;也有算术计算结果的&#xff0c;再复杂一点就是滑…

软考人数已超500万!请重视!

2020年40万&#xff0c;2021年94万&#xff0c;2022年129万&#xff0c;2023年软考报考人数已超500万&#xff01;2年时间直翻10倍&#xff01;如此火爆原因是什么&#xff1f; 不是打广告&#xff01;不是打广告&#xff01;不是打广告 千万不要上了”黑心培训结构“当&#x…

App的回归测试,有什么高效的测试方法?

直接抛出观点&#xff1a;高效的测试方法当然有&#xff0c;那就是采用【接口自动化】。 一、回归测试&#xff0c;测哪些东西 回归测试是软件测试过程中的一个重要的环节&#xff0c;如果说冒烟测试是对软件质量的抽检&#xff0c;那么回归测试就是保证软件质量的最后一道屏障…

集合01 - Java

集合 1、数组的不足2、集合3、集合的框架体系&#xff08;背&#xff09;CollectionMap 1、数组的不足 前面我们保存多个数据使用的是数组&#xff0c;那么数组有不足的地方&#xff0c;我们分析一下。 数组&#xff1a; 长度开始时必须指定,而且一旦指定&#xff0c;不能更改…