首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用Javascript在Javascript代码中搜索代码尝试访问的所有URL吗?

可以使用Javascript在Javascript代码中搜索代码尝试访问的所有URL吗?
EN

Stack Overflow用户
提问于 2013-04-03 22:26:46
回答 2查看 110关注 0票数 0

假设我在一个字符串变量中有一个完整的JS脚本。我并不想执行整个脚本,而是只想对它的代码进行足够的评估,以找出如果它正在运行,它将尝试检索哪些URL(通过Ajax)。

我可以将代码作为文本进行正则表达式搜索,但这不会找到故意使用replace()之类的东西混淆的URL。

这需要使用Javascript来完成。

如果可能的话,有没有人能至少提供一点提示,说明这是如何实现的?

编辑:对于上下文,我的项目是构建一个greasemonkey脚本,用于从UserScripts.org的脚本列表中过滤掉facebook垃圾邮件诈骗。我已经有了一个简单的文本搜索用于诈骗的常见facebook ajax URL,但诈骗作者已经在试图找到绕过它的方法。我需要在某种程度上可靠地捕获所有Ajax URL进行检查,而不管它们是如何串在一起的,并通过字符串函数进行了更改。如果感兴趣,请参阅http://userscripts.org/scripts/show/163038

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 22:55:51

此主题可能会对您有所帮助:intercept all ajax calls?

实际上,您可以重新定义XHR,使ajax调用的行为符合您的意图,而不是依赖于Javascript框架:

代码语言:javascript
复制
var ajax_urls = new Array();
var XHR_backup = new Array();
XHR_backup.open = XMLHttpRequest.prototype.open;
XHR_backup.send = XMLHttpRequest.prototype.send;

// Customize XHR behaviour
(function(XHR, ajax_urls) {
    "use strict";

    var open = XHR.prototype.open;
    var send = XHR.prototype.send;

    XHR.prototype.open = function(method, url, async, user, pass) {
        ajax_urls.push(url);
    };

    XHR.prototype.send = function(data) {
    }
})(XMLHttpRequest, ajax_urls);

// Evaluate your script
eval(resultScript);

for (var i = 0; i < ajax_urls.length; i++) {
    alert('Hey, my super XHR fetched ' + ajax_urls[i] + ' !!');
}

// Restore initial XHR behaviour
XMLHttpRequest.prototype.open = XHR_backup.open;
XMLHttpRequest.prototype.send = XHR_backup.send;

编辑:我还没有测试过这段代码,所以我在等待你的反馈。

Edit2:已测试并正常工作!http://jsfiddle.net/3qVUP/1/

票数 0
EN

Stack Overflow用户

发布于 2013-04-03 22:30:37

你说整个东西都在一个变量中……我想你的意思是一个字符串。有了任何东西的字符串表示,你就可以很容易地解析出你想要的东西。最棘手的部分是如何正确地完成它。在这里看看RegEx (正则表达式):http://www.regular-expressions.info/tutorial.html

这是一个用来查找URL的RegEx:

代码语言:javascript
复制
^http(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$

Re:评论

您可以将上述字符串的所有可能实例连接到一个BuildString()函数中,并返回一个包含结果的字符串,然后对返回的URL变量进行正则表达式。

即:

代码语言:javascript
复制
function Concatenation() {
    var _strOutput = "<script>var x = 0; x += " + GetVariableIterator() + "; return x; </script>";
    return _strOutput;
}

function FinalResult() {
    var _strCombined = Concatenation();
    // Do Regex and work with URLs
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15790127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档