首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取活动域

问如何提取活动域
EN

Stack Overflow用户
提问于 2019-12-15 06:32:52
回答 2查看 223关注 0票数 1

Linux中是否有bash命令/脚本,这样我们就可以从长列表中提取活动域,

例如,我有一个csv文件(domains.csv),水平地列出了5500万个域,我们只需要在csv文件(active.csv)中使用活动域。

此处活动是指至少有网页的域,而不是过期或未过期的域。示例whoisdatacenter.info没有过期,但它没有网页,我们认为它是非活动的。

我检查谷歌和堆栈网站。我看到我们可以通过两种方式获得域名。喜欢

代码语言:javascript
复制
$ curl -Is google.com | grep -i location 
Location: http://www.google.com/

or 

nslookup google.com | grep -i name 
Name:   google.com

但我不知道如何用bash为5500万个域名编写一个程序。

在下面的命令中,不会给出任何结果,所以我提出了nsloop和curl是获得结果的途径。

代码语言:javascript
复制
$ nslookup whoisdatacenter.info | grep -i name 
$ curl -Is whoisdatacenter.info | grep -i location 

前25行

代码语言:javascript
复制
$ head -25 domains.csv 

"
"0----0.info"
"0--0---------2lookup.com"
"0--0-------free2lookup.com"
"0--0-----2lookup.com"
"0--0----free2lookup.com"
"0--1.xyz"
"0--123456789.com"
"0--123456789.net"
"0--6.com"
"0--7.com"
"0--9.info"
"0--9.net"
"0--9.world"
"0--a.com"
"0--a.net"
"0--b.com"
"0--m.com"
"0--mm.com"
"0--reversephonelookup.com"
"0--z.com"
"0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.com"
"0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.com"
"0-0-0-0-0-0-0-0-0-0-0-0-0-10-0-0-0-0-0-0-0-0-0-0-0-0-0.info"

我正在运行的代码

代码语言:javascript
复制
while read line; 
do nslookup "$line" | awk '/Name/'; 
done < domains.csv > active3.csv

我得到的结果

代码语言:javascript
复制
 sh -x ravi2.sh 
+ read line
+ nslookup ''
+ awk /Name/
nslookup: '' is not a legal name (unexpected end of input)
+ read line
+ nslookup '"'
+ awk /Name/
+ read line
+ nslookup '"0----0.info"'
+ awk /Name/
+ read line
+ nslookup '"0--0---------2lookup.com"'
+ awk /Name/
+ read line
+ nslookup '"0--0-------free2lookup.com"'
+ awk /Name/
+ read line
+ nslookup '"0--0-----2lookup.com"'
+ awk /Name/
+ read line
+ nslookup '"0--0----free2lookup.com"'
+ awk /Name/

不过,下面的active3.csv是空的。脚本正在工作,但是有一些东西停止了大容量查找,要么在我的主机上,要么在别的什么地方。

代码语言:javascript
复制
while read line
do
nslookup $(echo "$line" | awk '{gsub(/\r/,"");gsub(/.*-|"$/,"")} 1') | awk '/Name/{print}'
done < input.csv >> output.csv

大容量nslookup在下面显示了这样的错误

代码语言:javascript
复制
server can't find facebook.com\013: NXDOMAIN

解决了的Ravi脚本工作非常好,我在我的MAC中运行,这给Nslookup带来了错误,我在CentOS Linux服务器上工作,Nslookup与Ravi脚本一起工作很好。

非常感谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-15 06:42:51

编辑:请按照OP显示的示例尝试我的编辑解决方案。

代码语言:javascript
复制
while read line
do
   nslookup $(echo "$line" | awk '{gsub(/\r/,"");gsub(/.*-|"$/,"")} 1') | awk '/Name/{found=1;next} found && /Address/{print $NF}'
done < "Input_file"

你能试一下吗。

OP的Input_file中有控制M字符,所以运行以下命令,首先删除它们:

代码语言:javascript
复制
tr -d '\r' < Input_file > temp && mv temp Input_file

然后运行以下代码:

代码语言:javascript
复制
while read line
do
   nslookup "$line" | awk '/Name/{found=1;next} found && /Address/{print $NF}'
done < "Input_file"

我假设,由于您正在传递域名,您需要获得他们的地址(IP地址)的输出。另外,由于您使用的是一个巨大的Input_file,所以它在提供输出方面可能有点慢,但是请相信我,这是一种更简单的方法。

票数 0
EN

Stack Overflow用户

发布于 2019-12-16 07:32:25

nslookup只是指出域名在DNS中是否有记录。拥有一个或多个IP地址并不自动意味着您拥有一个网站;许多IP地址都是为不同的目的而分配的(但巧合的是,可能会为另一个域名托管一个网站!)

(而且,nslookup对脚本编写并不特别友好;为了实现自动化,您需要查看dig。)

没有简单的方法可以在短时间内访问5500万个可能的网站,如果你想的话,也许你不应该使用Bash。例如,有关基于Python的各种方法的说明,请参见https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html。

即时错误消息表明输入文件中有DOS回车;这是一个常见的常见问题,Are shell scripts sensitive to encoding and line endings?会很好地讨论这个问题。

您可以并行运行多个curl实例,但最终可能会使网络饱和--尝试不同程度的并行性--可能会将文件分割成较小的部分,并在一个单独的主机上运行每个部分,其中一个单独的网络连接(可能在云中),但为了快速演示,

代码语言:javascript
复制
tr -d '\r' <file |
xargs -P 256 -i sh -c 'curl -Is {} | grep Location'

并行运行256个curl实例。您仍然需要弄清楚哪个输出对应于哪个输入,因此可能需要重构如下

代码语言:javascript
复制
tr -d '\r' <file |
xargs -P 256 -i sh -c 'curl -Is {} | sed -n "s/Location/{}:&/p"'

若要在每个输出前面打印输入域名,请执行以下操作。

(也许还要注意的是,仅仅一个域名并不是一个完整的URL。Http://“会帮助您在前面添加一个"https://”“,然后连接到它,但是如果域只有一个”https://“网站,并且没有从http:// one重定向,这仍然不能给您一个准确的结果。”

如果你在Mac上,而xargs不懂-i,那就试试-I {}之类的吧

代码语言:javascript
复制
tr -d '\r' <file |
xargs -P 256 sh -c 'for url; do curl -Is "$url" | sed -n "s/Location/{}:&/p"; done' _

这些示例假设您还没有彻底修复DOS回车;您可能真的应该这样做(并考虑将Windows从等式中完全删除)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59341703

复制
相关文章

相似问题

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