我是ZAP的新手,我对它的js / ecma脚本了解不多。
基本上,我试图将请求重定向到另一台主机。 假设连接到ZAP代理的应用程序在URL中发出请求:
http://www.somesite.com/path/to/a/file
但是我想将URL中的主机名更改为: another.site.com
因此它实际上会请求:http://www.anothersite.com/path/to/a/file
这是我尝试使用的代码,但是URL在请求中保持不变。
function proxyRequest(msg) {
// Debugging can be done using println like this
var uri = msg.getRequestHeader().getURI().toString()
var host = msg.getRequestHeader().getURI().getHost().toString()
print('proxyResponse called for url=' + uri)
if (host == 'download.qt.io') {
uri = uri.replace('download.qt.io/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
msg.getRequestHeader().setHeader('Location', uri)
print('proxyRequest changed to url=' + uri)
}
if (host == 'ftp.jaist.ac.jp') {
uri = uri.replace('ftp.jaist.ac.jp/pub/qtproject/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
msg.getRequestHeader().setHeader('Location', uri)
print('proxyRequest changed to url=' + uri)
}
if (host == 'qtproject.mirror.liquidtelecom.com') {
uri = uri.replace('qtproject.mirror.liquidtelecom.com/online/', 'mirrors.ocf.berkeley.edu/qt/online/')
msg.getRequestHeader().setHeader('Location', uri)
print('proxyRequest changed to url=' + uri)
}
return true
}
答案 0 :(得分:1)
选项1:替换规则
选项2:HttpSender脚本
function sendingRequest(msg, initiator, helper) {
var host = msg.getRequestHeader().getURI().getHost();
if (host.equals("www.somesite.com")) {
uri = msg.getRequestHeader().getURI();
uri.setEscapedAuthority("www.anothersite.com");
msg.getRequestHeader().setURI(uri);
}
return msg;
}
function responseReceived(msg, initiator, helper) {}
选项3:托管文件条目
nslookup www.somesite.com
,记下IP地址(w.x.y.z)。www.anothersite.com
关联。(WRT编辑您的主机文件的更多详细信息:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/)