枚举广域网上的HTTP服务器的讨论

sproll 2007-03-25 12:34:04
象搜索引轻公司,他们要在网上搜索各种网页怕是要先枚举HTTP服务器吧(该不会它可以访问标准委员会所掌握的所有域名数据库吧?)。
如果可以访问一个所有HTTP服务器的域名列表,从它上面一一遍历过去,用HTTP协议把服务器上的HTML文件下载来就完成原始资料的准备了吧。
所以如果可以枚举出所有的HTTP服务器域名,接下来的下载网页的问题就有解决的方案了。
用getaddrinfo()虽然可以做到查询一个服务器有没有HTTP服务,但是麻烦的就是需要指定服务器地址,比如说:www.csdn.net或者一个IP。虽然不知道域名,但IP地址倒可以枚举的。如果可以找到对于有HTTP服务的服务器,它的IP与域名的对应方法,问题就解决了。
不知道有没有谁知道怎么从HTTP服务器的IP来查询该服务器的域名的方法。
...全文
402 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2007-04-14
  • 打赏
  • 举报
回复
多谢指教!
关于你说的问题我不清楚 ,我未调试过这种有多个HTTP端口的主机。
hujun614 2007-04-13
  • 打赏
  • 举报
回复
有些互联网服务器,必须用主机的域名才能访问,用IP地址会得到一个空页面的!比如IIS设置里面,可以设一个站点的主机头,一旦设定,就必须使用该域名才能访问,这样可以有效避免有些人拿别人的服务器来刷自已域名的排名,炒火了再卖!!!
所以使用IP地址价值很低!
比如有些象新浪这样的域名,在很多IP上的内容是相同的,使用IP感觉不好。

而且http://202.119.47.40可以得到8080 ??????
要是他的IIS同使开了多个端口呢,比如8001-8010都是,你的函数返回那一个???
sproll 2007-04-02
  • 打赏
  • 举报
回复
可以找到202.119.47.40:8080这样的地址的。
我用getnameinfo函数,传入各个IP(IP通过暴力枚举方式),指定服务名为"http",则返回给我该主机的HTTP端口。
就可以了。
缺点就是不知道这是哪一个域名的服务器。
hujun614 2007-03-31
  • 打赏
  • 举报
回复
各有特点吧,比如google搜8080会找到 http://202.119.47.40:8080/ 这样的主机地址,
暴力应该不太可能找到这个地址吧?遇到一台主机就测试所有的端口还是不太现实!
再说很多小点的网站都是虚拟主机,很多个站点用一个主机,所以觉得使用暴力方式还是局限性很大,一般现在很多小点的搜索引擎都以服务行业为目标,主要针对的目标是有一定范围的,还是数据库列出要抓的站点好一些,以前在一个QQ群里见过一个设计也是这么做的!
qwertxp 2007-03-29
  • 打赏
  • 举报
回复
恩,恩。。。学习学习~
sproll 2007-03-29
  • 打赏
  • 举报
回复
WingForce(初六,履霜,坚冰至。):
这个返回的也是IP地址,不是域名。
枚举地址比爬虫更直接,更有效率吧?孤岛型无链接的域名都能给找出来。
sproll 2007-03-29
  • 打赏
  • 举报
回复
与其用爬虫,还不如直接暴力枚举所有的A\B\C地址。
大不了从HTML页面的TITLE中解析该网站的域名。
WingForce 2007-03-29
  • 打赏
  • 举报
回复
gethostbyaddr

The gethostbyaddr function retrieves the host information corresponding to a network address.

Note The gethostbyaddr function has been deprecated by the introduction of the getnameinfo function. Developers creating Windows Sockets 2 applications are urged to use the getnameinfo function instead of the gethostbyaddr function. See Remarks.


struct HOSTENT* FAR gethostbyaddr(
const char* addr,
int len,
int type
);

BOYGUARD110 2007-03-29
  • 打赏
  • 举报
回复
UP
pzhuyy 2007-03-27
  • 打赏
  • 举报
回复
学习一下.
gaooo 2007-03-27
  • 打赏
  • 举报
回复
网络爬虫不是这么做的吧
  • 打赏
  • 举报
回复
搜索引擎的爬虫,估计能将绝大多数的网址给爬出来
cloudgamer 2007-03-26
  • 打赏
  • 举报
回复
学习
双杯献酒 2007-03-25
  • 打赏
  • 举报
回复
GZ
hujun614 2007-03-25
  • 打赏
  • 举报
回复
反向解释当然是一种方法,但个人觉得不太科学!!!

因为很多网址可以共用IP的,所以搜索引擎都是一个主机列表开始,取回页面后分析链接,然后得到其它主机,如果到某个主机的链接比较多的话,搜索引擎算法会认为其指标较高,会先抓,多抓其上的页面!

对于专门有影响的行业网站,搜索引擎还会专门联系,找对方提供需要抓取的URL列表!
WingForce 2007-03-25
  • 打赏
  • 举报
回复
反向域名解析协议

int getnameinfo(
const struct sockaddr* sa,
socklen_t salen,
TCHAR* host,
DWORD hostlen,
TCHAR* serv,
DWORD servlen,
int flags
);
sproll 2007-03-25
  • 打赏
  • 举报
回复
hujun614:
的确某些域名的HTTP服务器绑定到多个IP,我发现CSDN的服务器IP就有:
211, 100, 26, 124
211, 100, 26, 121
211, 100, 26, 122
211, 100, 26, 123
现在我的想法是已经知道服务器的IP了,怎么获得它的域名,比如说211.100.26.121所对应的域名www.csdn.net。我想RFC上可能有某种协议可以进行这样的IP到域名的反查询的,不知道有谁知道。
sproll 2007-03-25
  • 打赏
  • 举报
回复
WingForce:
这个函数的参数host返回来的不是域名,而是一个IP地址。以下几个枚举参数我都试过了:
NI_NOFQDN
NI_NUMERICHOST
NI_NAMEREQD
NI_NUMERICSERV
NI_DGRAM

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧