【发布时间】:2019-12-16 17:00:34
【问题描述】:
我正在开发一个 chrome 插件,如果它位于前 100,000 个站点中,我将不得不使用浏览器上的当前 URL 查询 Alexa API。 我正在使用 Javascript - 我有一个 Python 解决方案,但我试图在 Javascript 中实现这一点。
我试过xmlhttprequest,我不知道我的代码是否正确,看起来这就是实现它的方法。
我是 Javascript 新手,希望能提供注释代码。
//--------我的JAVASCRIPT JABBLE-----//
var urlDomain = window.location.hostname;
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://data.alexa.com/data?cli=10&dat=s&url=" + urlDomain, false).read(), "xml").find("REACH")['RANK']
except TypeError:
return -1
rank = int(rank)
return 1
if rank < 100000
else 0
//-------THE WORKING PYTHON SOLUTION-----//
def web_traffic(url):
try:
rank = \
bs4.BeautifulSoup(urllib.urlopen("http://data.alexa.com/data?cli=10&dat=s&url=" + url).read(), "xml").find("REACH")['RANK']
except TypeError:
return -1
rank = int(rank)
return 1 if rank < 100000 else 0
该项目是一个钓鱼页面检测插件,如果 URL 不在前 100,000 则返回 -1,如果 URL 在前 100,000 则返回 1,如果 URL 不在前 100,000 则返回 0网站也。
【问题讨论】:
-
那个 API 端点似乎不再工作了。无论输入如何,它总是返回“Okay”,例如data.alexa.com/data?cli=10&dat=s&url=http://…
-
JavaScript 部分目前不是有效的 JavaScript。在尝试弄清楚如何查询 API 之前,我建议您先熟悉一下该语言。 This page 有语言和语法的基本概述,或者有this complete guide。
-
网上也有各种使用 JavaScript 获取数据的指南,例如this one。由于您正在编写扩展程序,因此无需担心支持旧浏览器,因此使用现代的
fetch()API 而不是XMLHttpRequest将是最简单的。 -
@ecraig12345 我是 JavaScript 新手,我知道代码无效,这就是为什么我称它为 jabble 哈哈...感谢您提供的资源链接,它们肯定会很有用。但如果我能得到一个有效的代码,让我完成 chrome 扩展的那部分。
-
@chris,我刚刚注意到 alexa 不再提供免费的了......我刚刚检查了一些开放 dns 的替代品......而且我还遇到了一个相当老的 alexa 转储...... s3.amazonaws.com/alexa-static/top-1m.csv.zip 打开的 dns 转储可以在这里找到 s3-us-west-1.amazonaws.com/umbrella-static/index.html 我必须下载这些,转换并解析为 Jason/XML
标签: javascript jquery ajax xml