【干货分享】使用selenium实现异步流量获取和反爬处理
2022-11-1 17:30:57 Author: 戟星安全实验室(查看原文) 阅读量:22 收藏

戟星安全实验室

    忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等

本文约2512字,阅读约需7分钟。

三个模拟浏览器操作库

selenium

是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由杰森·哈金斯(Jason Huggins)于2004年开发,作为Thought Works的内部工具。Selenium支持跨不同浏览器,平台和编程语言的自动化。

Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby

pyppeteer

Puppeteer 的 Python 版本的实现,在puppeteer之上稍微包装了下,Puppeteer 是 Google 基于 Node.js 开发的一个工具,主要是用来操纵 Chrome 浏览器的 API,通过 Javascript 代码来操纵 Chrome 浏览器的一些操作,用作网络爬虫完成数据爬取、Web 程序自动测试等任务,其 API 极其完善,功能非常强大

pyppeteer的web自动化是基于chromium来实现的,仅支持chromium 浏览器。同时它不是官方库,很久未维护了

对比

Pyppeteer在安装配置的便利性和运行效率方面都要远胜selenium,一些简单操作比selenium来的快

另一个Playwright

微软开发,有维护,新出,模拟人工操作,可直接根据操作生成代码

playwright-python,是一款基于python的自动化测试工具,可以通过录制功能自动生成测试脚本;Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit(Safari )等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

Selenium+Browsermobproxy实现异步流量获取

browsermobproxy是一个java开发的抓包工具,因此运行环境需要要java

开启流量代理

# 开启Proxy服务self._bmpserver = browsermobproxy.Server(self._BMP_path, options=self._BMP_options)self._bmpserver.start()# 开启对服务器信任选项 params={"trustAllServers": "true"}self._bmpclient = self._bmpserver.create_proxy(params={"trustAllServers": "true"})# 流量走代理监听option.add_argument("--proxy-server={}".format(self._bmpclient.proxy))

导出流量,都是以字典结构保存的

# 设置捕获请求头和内容、二进制内容 options={'captureHeaders': True, 'captureContent': True, 'captureBinaryContent':True}self._bmpclient.new_har(options={'captureHeaders': captureHeader, 'captureContent': captureContent})self._chrome_driver.get(target)self._chromeloads()
# 导出流量result = self._bmpclient.harfor entry in result['log']['entries']: _url = entry['request']['url']    print("请求地址:", _url)

使用属性来配置是否保留http的头和内容,都保留和burp一样,都不保留则只记录访问url信息

new_har(options={'captureHeaders': True, 'captureContent': True})

browsermobproxy会保存访问目标过程中产生的全部请求

selenium默认的网页加载模式是“网页全部资源加载”,但是面对某宇盾时,会误认为防护脚本(某个js页面)是目标网页,需要设置延时大于1秒来绕过,可以用某vnd站来测试

selenium的防反爬检测

stealth.min.js

主要以过https://bot.sannysoft.com/这个检测为目标

js文件获取

https://cdn.jsdelivr.net/gh/requireCool/stealth.min.js/stealth.min.js

如果失效在github或Google搜索找一下

用法很简便,使用execute_cdp_cmd执行js脚本即可

伪造效果

selenium_stealth

py的一个反反爬库

pip3 install selenium-stealth

同样使用简便,还可以直接自定义一些信息

效果

手动配置(不推荐)

使用execute_cdp_cmd去挨个配置选项值,如下配置webdriver属性

# 设置webdriverdriver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {    "source": """() => {const newProto = navigator.__proto__delete newProto.webdrivernavigator.__proto__ = newProto"""})

这种方式适用于一些专业的防反爬处理,性价比低,不推荐用

往期回顾

【干货分享】Swaks+163邮箱邮件伪造
【奇技淫巧】教你零成本拥有高匿C2
【干货分享】互联网资产搜集平台大全

声明

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。

    戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

戟星安全实验室

# 长按二维码 || 点击下方名片 关注我们 #


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMDMwNzk2Ng==&mid=2247504579&idx=1&sn=87b0e24bdf3153133d839f10d0a1f620&chksm=c27ed8d2f50951c4f59b937a481a7a0ec34cdf95aeeecc4ed57fd4f532f5c85d41b4d404ecab#rd
如有侵权请联系:admin#unsafe.sh