用于
等输入域web.whatsapp.com
facebook.com
electron.atom.io
我想查找通过Chrome导航栏或Google搜索运行时会弹出的完全限定的网址。所以输出将是
https://www.facebook.com
https://web.whatsapp.com/
http://electron.atom.io/
解决方案至少可以找到协议,并且 - 比如上面的facebook示例 - 找到第一个最佳域的路径。我尝试了谷歌自定义搜索API(非免费)和节点的基本http / https对象,只是不接受域。
感谢任何帮助!
答案 0 :(得分:1)
NodeJS有一个名为dns
的模块,可以解决几乎所有错误/半格式的链接:
例如resolve4()
会将dns解析为ipv4:
const dns = require('dns');
dns.resolve4('nodejs.org', (err, addresses) => {
if (err) throw err;
console.log(`addresses: ${JSON.stringify(addresses)}`);
addresses.forEach((a) => {
dns.reverse(a, (err, hostnames) => {
if (err) {
throw err;
}
console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);
});
});
});
还有lookup(hostname[, options], callback)
和dns.resolve(hostname[, rrtype], callback)
其中一个应该是适合您的有效解决方案。
我指的文件:
答案 1 :(得分:1)
好的,在更好的事情发生之前,我将使用免费的duckduckgo API并使用第一个搜索结果中的URL。
var lookupFullyQualifiedURL = function ( urlIn, callback ) {
if(!(typeof callback === "function")) {
callback = function() {};
}
var request = require("request");
if (urlIn == undefined )
return urlIn;
const srcUrl = "https://duckduckgo.com/?q=" + urlIn + "&format=json";
request(srcUrl, function (error, response, body) {
if (!error && response.statusCode == 200) {
var json = JSON.parse(body);
try {
var urlOut = json.Results[0].FirstURL;
callback(urlIn, urlOut);
} catch (err) {
callback(urlIn, undefined);
}
}
})
}
var callback = function ( input, output ) {
console.log(input + " >> " + output);
}
lookupFullyQualifiedURL("facebook", callback);
lookupFullyQualifiedURL("facebook.com", callback);
lookupFullyQualifiedURL("github", callback);
lookupFullyQualifiedURL("trello.com", callback);
lookupFullyQualifiedURL("whatsapp", callback);
lookupFullyQualifiedURL("web.whatsapp.com", callback);
lookupFullyQualifiedURL("whatsapp", callback);
lookupFullyQualifiedURL("spotify", callback);
输出是这样的:
web.whatsapp.com >> undefined
whatsapp >> https://www.whatsapp.com/
whatsapp >> https://www.whatsapp.com/
trello.com >> https://trello.com
github >> https://github.com/
spotify >> https://www.spotify.com
facebook >> https://www.facebook.com/
facebook.com >> https://www.facebook.com/
仍有改进的余地。例如,对于web.whatsapp.com,不返回任何内容。这是由于某些API limitations of DuckDuckGo。