gpt4 book ai didi

javascript - 尝试打印有警报的 URL 时如何解决并发问题?

转载 作者:行者123 更新时间:2023-11-28 07:50:50 25 4
gpt4 key购买 nike

我正在尝试使用 PhantomJS 循环访问几个 URL,打开页面并检查任何页面上是否有警报。我还打印发生警报的页面的 URL。

代码如下:

var page = require('webpage');

var u = ["http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=<SCRIPT>alert('XSS');</SCRIPT>", "http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=abcd"]
var url = "";

for(var i = 0; i < u.length; i++) {
url = u[i];

var webpage = page.create();

phantom.addCookie({
'name':'PHPSESSID',
'value':'00885b45d9ddda3e757371b177c5959b',
'domain':'127.0.0.1'
});

webpage.onAlert = function(alertMessage){
console.log("Alert URL: " + webpage.url);
console.log("Alert occured with message: " + alertMessage);
}

webpage.open(url, function (status) {
console.log("Opening URL: " + webpage.url);
phantom.exit();
});
}

我希望输出的部分是:

Alert URL: http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=<SCRIPT>alert('XSS');</SCRIPT>
Alert occured with message: XSS

但是,它每次都不同,并显示不正确的输出,例如:

Alert URL: http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=abcd
Alert occured with message: XSS

看起来这是因为回调的并发性而发生的。

有没有办法处理这个问题以确保输出符合预期?或者这个库不适合这样使用,我应该尝试其他方法吗?

最佳答案

您在循环中创建一个新页面,就 PhantomJS 运行时而言,它本质上是一个新选项卡。它将同时执行。要为脚本添加结构和可重复性,您必须编写一些链接。

这样的事情应该有效:

var page = require('webpage');

var u = ["http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=<SCRIPT>alert('XSS');</SCRIPT>", "http://127.0.0.1/DVWA-1.0.8/vulnerabilities/xss_r/?name=abcd"]

function each(list, func, done){
var len = list.length,
previous = done;
for(var i = len - 1; i >= 0; i--) {
(function(item, done){ // IIFE
previous = function(){
func(item, done);
};
})(list[i], previous);
}
previous(); // start the chain
}

each(u, function(url, done){
var webpage = page.create();

phantom.addCookie({
'name':'PHPSESSID',
'value':'00885b45d9ddda3e757371b177c5959b',
'domain':'127.0.0.1'
});

webpage.onAlert = function(alertMessage){
console.log("Alert URL: " + webpage.url);
console.log("Alert occured with message: " + alertMessage);
}

webpage.open(url, function (status) {
console.log("Opening URL: " + webpage.url);
done();
});
}, function(){
phantom.exit();
});

关于javascript - 尝试打印有警报的 URL 时如何解决并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com