本文主要是介绍云真机-一键抓包的问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近我们的云真机平台需要对标岩鼠,新增抓包的功能,所以专门去看了下岩鼠的抓包页面, 发现是通过mitproxy来做iframe嵌套实现的。那我们也可以借用mitproxy来解决我们的问题了。
问题1
本以为事情会很顺利,所以我们先尝试做demo的时候,本地先启动了一个mitproxy的服务,由于我们是需要有web的页面的, 所以我们的启动命令是:
# web-host跟上的是本机的ip地址
mitmweb --web-port 10000 --no-web-open-browser -p 20000 --web-host 192.168.31.252
直接访问链接是可以正常访问的。但是我们将这个页面以iframe的形式嵌入到我们自己的网站上的时候,结果确不是我们想要看到的。
页面并没有正常的加载出来,而通过控制台,我们发现出现了这样的一个错误提示信息。
通过谷歌得到了这样子的信息 X-Frame-Options
X-Frame-Options
有三个可能的值:
X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/
换一句话说,如果设置为 deny
,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为sameorigin
,那么页面就可以在同域名页面的 frame 中嵌套。
**deny
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。sameorigin
表示该页面可以在相同域名页面的 frame 中展示。allow-from *uri*
**表示该页面可以在指定来源的 frame 中展示
通过上述的内容,我们大致能够猜测出来,是由于mitmweb的header中设置了deny的结果,不过这个是我们的猜测而已,所以我们还是需要具体确认下才知道。
app.py
def set_default_headers(self):super().set_default_headers()self.set_header("Server", version.MITMPROXY)self.set_header("X-Frame-Options", "DENY")self.add_header("X-XSS-Protection", "1; mode=block")self.add_header("X-Content-Type-Options", "nosniff")self.add_header("Content-Security-Policy","default-src 'self'; ""connect-src 'self' ws:; ""style-src 'self' 'unsafe-inline'")
我们可以看到确实在header中添加了这样子的一个deny的情况。所以要解决这个问题我们只能够修改源码来进行解决了。
页面已经可以正常打开了
问题2
本以为下来就不会有问题了,结果我们操作web上面的一些按钮后,界面均没有任何的响应,通过抓包发现这样子的结果。均为403的状态。
通过后台的日志我们看到这样子的一个日志信息
WARNING:tornado.general:403 PUT /options (192.168.31.252): XSRF cookie does not match POST argument
看来是嵌套的iframe还进行了xsrf的一些认证了。但是我们知道最新的chrome的版本禁止了内嵌iframe的cookie的传递,所以如果要根本上解决这个问题就比较困难了,所以还是去掉xsrf的认证是最靠谱的了。
所以我们找到了这样子的一个开关
app.py
def __init__(self, master: "mitmproxy.tools.web.master.WebMaster", debug: bool) -> None:self.master = mastersuper().__init__(default_host="dns-rebind-protection",template_path=os.path.join(os.path.dirname(__file__), "templates"),static_path=os.path.join(os.path.dirname(__file__), "static"),xsrf_cookies=True,cookie_secret=os.urandom(256),debug=debug,autoreload=False,)....
所以这里我们只要xsrf_coookies不启用即可了。
至此 所有的问题都得到了解决了。
这篇关于云真机-一键抓包的问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!