0

我正在制作一个脚本来计算网络中单词的分布。我要做的就是尽可能多地检查随机网站,并计算这些网站中的单词数量,列出它们并对其进行排序,以便大多数时间出现的单词位于列表的顶部。我正在做的是生成随机 ip 号:

a=`expr $RANDOM % 255`
let "a+=1"
b=`expr $RANDOM % 256`
c=`expr $RANDOM % 256`
d=`expr $RANDOM % 256`
ip=$a.$b.$c.$d

之后使用 nmap 检查端口 80 或 8080 是否在这些站点上打开,以便有可能它是一个网站。

如果我确定该 IP 不属于某个网站,我会将地址添加到黑名单文件中,这样就不会再次对其进行检查。

如果端口 80 或端口 8080 是打开的,那么我必须通过反向查找来解析 ip 并获取属于该 ip 的所有域名。

问题是,如果我执行这些命令之一,输出只是单个 PTR 记录,而可能有多个:

dig -x ipaddres +short
nslookup ipaddress
host ipaddress

我更喜欢在 bash 中解决这个问题,但如果 C 中有解决方案,它也会有所帮助

之后,我使用 w3m 将网站页面复制到一个文件中,并计算单词的出现次数。

另外在这里我还有另一个问题,有没有办法检查属于该网站的所有可用公共页面,而不仅仅是索引一个?

任何帮助表示赞赏

4

1 回答 1

3

由于虚拟主机等原因,许多网站无法仅通过 IP 地址访问。我不确定您是否会通过这样做在网络上获得统一的单词分布。此外,托管网站的 IP 地址并不是通过随机生成 32 位数字来均匀分布的。拥有大多数真实网站的托管公司将集中在小范围内,许多其他 IP 将成为可能没有托管的 ISP 的端点。

鉴于上述情况以及您要解决的问题,我实际上建议获取要抓取的 URL 分布并计算这些 URL 的词频。一个很好的工具是 WWW:Mechanize in Python, Perl, Ruby 等。由于您的限制因素将是您的互联网连接而不是您的处理速度,因此在低级别执行此操作没有任何优势语。这样,您将更有可能在同一个 IP 上访问多个站点。

于 2012-08-04T02:52:11.787 回答