首页 > 其他分享 >浏览器web扫描工具

浏览器web扫描工具

时间:2023-06-01 21:35:21浏览次数:41  
标签:web playwright 浏览器 url ip 扫描 page port

NO.1 由来

在平时打项目时,拿到入口点后就会遇到一个比较尴尬的问题。扫描吧怕点掉了,不扫就只能手动敲ip访问,耗时耗力。就想着用python写个调浏览器扫描的脚本。

NO.2 代码

只适合扫描小网段资产,毕竟目的就是尽量模拟正常访问的流量。写的一般,有需要的可以自己改改

#调用浏览器扫描网段web,模拟人工访问。
#需安装playwright,默认调用chromium/edge。若无法使用需安装Playwright内置浏览器python -m playwright install
#使用方法 python bbscan.py -ip 10.88.2.123-10.88.2.130 -port 80,8080
import playwright
from playwright.sync_api import sync_playwright
import sys
import time

# 定义一个函数,将ip地址转换为整数
def ip_to_int(ip):
    # 分割ip地址为四个部分,并将每个部分转换为整数
    parts = [int(p) for p in ip.split('.')]
    # 按位移运算合并为一个整数,并返回
    return sum(p << (24 - i * 8) for i, p in enumerate(parts))

# 定义一个函数,将整数转换为ip地址
def int_to_ip(n):
    # 按位移运算分割整数为四个部分,并将每个部分转换为字符串
    parts = [str((n >> (24 - i * 8)) & 255) for i in range(4)]
    # 用点号连接为一个ip地址,并返回
    return '.'.join(parts)

# 定义一个空列表,用于存储ip地址
ips = []

# 获取命令行参数,并转换为一个字典
args = dict(zip(sys.argv[1::2], sys.argv[2::2]))

# 如果字典中有-ip键,那么获取其值作为ip值
if '-ip' in args:
    ip = args['-ip']
    # 如果ip值包含-,那么表示是一个范围,需要分割为起始ip和结束ip
    if '-' in ip:
        start_ip, end_ip = ip.split('-')
        # 将起始ip和结束ip转换为整数,并生成一个范围
        start_n = ip_to_int(start_ip)
        end_n = ip_to_int(end_ip)
        # 遍历范围中的每个整数,并将其转换为ip地址,添加到列表中
        ips.extend(int_to_ip(n) for n in range(start_n, end_n + 1))
    # 否则,表示是一个单个的ip地址,直接添加到列表中
    else:
        ips.append(ip)

# 如果字典中有-port键,那么获取其值作为port值
if '-port' in args:
    port = args['-port']
    # 如果port值包含逗号,那么表示是多个端口,需要分割为一个列表
    if ',' in port:
        ports = port.split(',')
    # 否则,表示是一个单个的端口,直接转换为一个列表
    else:
        ports = [port]

# 使用playwright.sync_api模块创建一个同步的浏览器上下文
with sync_playwright() as p:
    browser_context = p.chromium.launch()
    # 遍历列表中的每个ip地址和端口,拼接成一个url,并访问该url
    for ip in ips:
        for port in ports:
            url = f'http://{ip}:{port}'
            # 使用浏览器上下文的new_page方法创建一个新的页面,并使用try-except语句来处理超时异常
            page = browser_context.new_page()
            try:
                #请求url,3000毫秒超时
                page.goto(url,timeout=3000)
                # 获取网页的标题,并打印出来
                title = page.title()
                print(f'访问了{url},网页的标题是{title}')
                # 等待1秒钟
                time.sleep(1)
            except (playwright._impl._api_types.Error, playwright._impl._api_types.TimeoutError) as e:
                # 如果发生超时异常,打印出错误信息,并继续执行下一个url
                print(f'访问{url}超时,错误信息是{e}')
            finally:
                # 最后,在finally中关闭页面对象
                page.close()
    # 关闭浏览器上下文对象
    browser_context.close()

效果如下,如果在强检测环境下可以更改访问间隔。
image

标签:web,playwright,浏览器,url,ip,扫描,page,port
From: https://www.cnblogs.com/pykiller/p/17450263.html

相关文章

  • Rust Web 全栈开发之增加字段和重构
    RustWeb全栈开发之增加字段和重构增加字段和重构现状重构项目目录wsonmain[✘!?]via......
  • 关闭浏览器后再次访问session 保证是同一个sessionid
    我们知道在正常情况下,发送http请求时,消息头中会自动携带cookie信息,这其中就会包括SESSIONID信息,所以只要我们没有关闭浏览器,消息头中都会自动携带这个信息,以供服务器访问相应的session。 但是如果我把浏览器关闭了呢?这样的话,我该如何再次访问相应的session呢?我们可以这样做,来实现......
  • 浏览器配置微信模拟器
     1.打开浏览器控制台,选择移动端,选择Responsive->Edit 2.添加自定义设备①点击Addcustondevice,②输入设备名称如weChat,③输入配置内容:mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko......
  • java.lang.ClassNotFoundException: weblogic.utils.NestedException
    我单元测试的时候报这种错误Causedby:java.lang.ClassNotFoundException:weblogic.utils.NestedException atjava.net.URLClassLoader$1.run(URLClassLoader.java:202) atjava.security.AccessController.doPrivileged(NativeMethod) atjava.net.URLClassLoader.findC......
  • web Worker
    WebWorker(工作线程)是HTML5中提出的概念,分为两种类型,专用线程(DedicatedWebWorker)和共享线程(SharedWebWorker)。专用线程仅能被创建它的脚本所使用(一个专用线程对应一个主线程),而共享线程能够在不同的脚本中使用(一个共享线程对应多个主线程)。WebWorker的意义在于可以......
  • GoWeb项目目录结构参考
    GoWeb项目目录结构目录结构main.gogo.modgo.summodel 数据库操作,增删改查,固化的通用接口view 视图文件controller 通讯请求,API操作等内容等业务逻辑router middleware 中间件部分可以放置在根目录,也可以放置在router内.gin项目一般放置在router目录内confi......
  • 使用WPF、OwinSelfHost和Swagger创建自托管的Web API
    在本篇博客中,我将介绍如何在WPF应用程序中使用OwinSelfHost和Swagger来创建自托管的WebAPI。我们将使用WPF作为我们的应用程序界面,OwinSelfHost来自托管我们的WebAPI,并使用Swagger来为我们的API生成文档。首先,确保你的计算机上已安装了以下组件:VisualStudio2017.NETFramew......
  • python 搭建一个Web自动化测试环境
    搭建一个Web自动化测试环境的具体步骤如下:1.安装Python:首先需要安装Python编程语言。可以从Python官方网站下载最新的稳定版本,并按照安装指南进行安装。官方网站链接:https://www.python.org2.安装浏览器驱动程序(注意:浏览器版本需要和驱动版本对应):根据使用的浏览器类型,下载对应......
  • web自动化
    元素定位XPATH选择器什么是xpath?XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在HTML\XML文档中查找信息的语言。W3School官方文档:http://www.w3school.com.cn/xpath/index.asp什么是XML?XML指可扩展标记语言(EXtensibleMarkupLanguage)XML是一种标记语言,很......
  • WEB漏洞—SQL注入之堆叠及WAF绕过注入
    1、堆叠查询注入stackedinjections(堆叠注入)从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。在sql语句中以; 结束语句mysql>select*fromusers;+----+----------+------------+|id|username|password|+----+----------+------------+|1|Dumb......