mitmproxy进行拦截
import requests
from selenium import webdriver
from lxml import etree
import time
class DiffSpider:
def __init__(self):
self.baseurl = 'https://www.nst.com.my/actionline'
# self.baseurl = 'https://v.youku.com/v_show/id_XNDE4MzQzOTA2NA==.html'
self.options = webdriver.ChromeOptions()
# self.options.add_argument('--headless')
# self.options.add_experimental_option('excludeSwitches', ['enable-automation'])
self.driver = webdriver.Chrome(options=self.options)
self.driver.maximize_window()
self.headers ={'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
'Accept-Language':'zh-CN,zh;q=0.9',
}
def gethtml(self):
self.driver.get(self.baseurl)
# self.driver.get(self.baseurl)
time.sleep(2)
chrome_html = self.driver.page_source
print(chrome_html)
self.writeto(chrome_html)
def writeto(self, chrome_html):
with open('chrome_sourse.html','w', encoding='utf-8')as f:
f.write(chrome_html)
if __name__ == '__main__':
spider = DiffSpider()
spider.gethtml()
拦截
from mitmproxy import ctx
def response(flow):
if '/www.nst.com.my/actionline' not in flow.request.url :
return
# for webdriver_key in ['webdriver', '__driver_evaluate', '__webdriver_evaluate', '__selenium_evaluate',
# '__fxdriver_evaluate', '__driver_unwrapped', '__webdriver_unwrapped', '__selenium_unwrapped',
# '__fxdriver_unwrapped', '_Selenium_IDE_Recorder', '_selenium', 'calledSelenium',
# '_WEBDRIVER_ELEM_CACHE', 'ChromeDriverw', 'driver-evaluate', 'webdriver-evaluate',
# 'selenium-evaluate', 'webdriverCommand', 'webdriver-evaluate-response', '__webdriverFunc',
# '__webdriver_script_fn', '__$webdriverAsyncExecutor', '__lastWatirAlert',
# '__lastWatirConfirm', '__lastWatirPrompt', '$chrome_asyncScriptInfo',
# '$cdc_asdjflasutopfhvcZLmcfl_']:
# ctx.log.info('Remove "{}" from {}.'.format(webdriver_key, flow.request.url))
# flow.response.text = flow.response.text.replace('"{}"'.format(webdriver_key), '"NO-SUCH-ATTR"')
flow.response.text = flow.response.text.replace('k60.L70(+"49")','false')
flow.response.text = flow.response.text.replace('k60.L70(+"232")', 'user-agent')
flow.response.text = flow.response.text.replace('k60.X70(+"489")', '{ "runtime": {}}')
flow.response.text = flow.response.text.replace('k60.X70("235" | 0)', '["zh-CN", "zh"]')
flow.response.text = flow.response.text.replace('k60.L70(28)', 'false')
flow.response.text = flow.response.text.replace('k60.L70("462" - 0)', 'Google Inc')
flow.response.text = flow.response.text.replace('U1[k60.L70("303" | 0)]', '100')
flow.response.text = flow.response.text.replace('U1[k60.X70("7" * 1)]', '40')
原文链接:https://blog.csdn.net/qq_24137739/article/details/93631569
mitmproxy进行拦截的更多相关文章
- Android 抓包,监控流量工具之 mitmproxy
转:http://greenrobot.me/devpost/how-to-debug-android-http-get-started/ mitmproxy实践教程之调试 Android 上 HTT ...
- mitmproxy
通过脚本定制化实现篡改request或者response mitmproxy 顾名思义中间人代理[man-in-the-middle proxy],和fiddler.Charles等工具类似,通过代理 ...
- [转]mitmproxy套件使用攻略及定制化开发
mitmproxy是一款支持HTTP(S)的中间人代理工具.不同于Fiddler2,burpsuite等类似功能工具,mitmproxy可在终端下运行.mitmproxy使用Python开发,是辅助w ...
- 初步认识mitmproxy(一)
在windows机器上,经常用的最多的是fiddler工具,很强大,图形化界面,使用方便.简单:在mac上,Charles 类似fiddler工具,同样是易于操作的图形化界面,同样都是通过代理的方式实 ...
- mitmproxy的使用
一.介绍 中间人代理可以理解成和中间件差不多 mitmproxy工程工具包,主要包含了3个组件 mitmproxy:拦截的http(s)记录控制台显示 [window不支持] mitmdump:命令行 ...
- 从零开始学mitmproxy抓包工具
Man In The Middle mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包.知名的网络抓包工具有Fi ...
- Python3自定义http/https请求拦截mitmproxy脚本
[本文出自天外归云的博客园] 脚本内容 代码如下: from mitmproxy import http, ctx from multiprocessing import Lock class Fil ...
- [转]使用 mitmproxy + python 做拦截代理
使用 mitmproxy + python 做拦截代理 本文是一个较为完整的 mitmproxy 教程,侧重于介绍如何开发拦截脚本,帮助读者能够快速得到一个自定义的代理工具. 本文假设读者有基本的 ...
- Mitmproxy介绍及Python拦截代理
使用 mitmproxy + python 做拦截代理 转自:https://blog.wolfogre.com/posts/usage-of-mitmproxy/ 本文是一个较为完整的 mitm ...
随机推荐
- 关于近期使用webpack所引发的思考
近期,(使其也挺长时间了).使用了一段时间的webpack. 但是在使用期间个人感觉并不想网上说的那样好,个人对webpack的评价并不是很高,甚至有点反感使用webpack. 个人感觉使用webpa ...
- 碰到的TypeError--记录
TypeError: object of type 'Response' has no len() 我在写爬虫的时候,通过requests获取到了网址的html文件,一开始是用content保存下 ...
- 为openstack制作CoreOS虚拟机镜像(基于CoreOS官方提供镜像)
OpenStack源码交流群: 538850354 1.下载CoreOS镜像(633.1.0版本) CoreOS官网已经有openstack使用的虚拟机镜像,可以直接下载,然后进行修改 http:// ...
- MongonDB 知识
配置 vi mongodb.conf dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/data/mongodb.log port ...
- JAVA 的8种基本数据类型
整型 int 一般的数据 long 极大的数据 short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组 byte 用于特定的场合,比如底层的文件处理或者需要控制占用存储单 ...
- SQL进阶系列之0窗口函数
窗口函数 What's 窗口函数? 窗口函数也称为OLAP(OnLine Analytical Processing)函数,目前MySQL还不支持. 窗口函数的语法 <窗口函数> OVER ...
- 51nod 2494 最长配对
小b有一个01序列,她想找到一个最长的区间使得这个区间的01能两两配对,即0的个数和1的个数相等.求最长区间的长度. 收起 输入 第一行一个正整数n,表示数组长度,其中0<n≤50000: ...
- workerman——报错
stream_socket_server(): unable to connect to tcp://0.0.0.0:8282 (Address already in use) in file [报错 ...
- maven中profile的使用
转载:https://blog.csdn.net/java_collect/article/details/83870215 前言 在开发过程中,我们的项目会存在不同的运行环境,比如开发环 ...
- Spring asm
Spring 获取类的详细信息,以及方法时候,是通过asm 字节码进行获取的,在平时中我们也可以依赖spring 进行处理我们的类 //可以获取类的详细信息,比如父类上谁,类上面的注解 ,是否上接口 ...