php抓取网页域名(有时候需要用Python获取某个网站的子域名(图))

优采云 发布时间: 2021-11-08 01:19

  php抓取网页域名(有时候需要用Python获取某个网站的子域名(图))

  有时需要使用Python获取一个网站的子域名,在查看一些大网站的时候经常用到。我用来查找 网站 的子域的方法是在 网站 和链接中找到它,偶尔我会使用 google。后来听朋友乔三少说,bt5下有一个获取子域的小工具,不过我也没太在意。有一天,当我要获得某个网站的子域时,我向他询问了程序的名称,但他一时想不起来。. . 然后他说有一个在线查询网站,把网站发给我。查询网站的子域名,在“域”右侧的输入框中输入网站的域名,然后点击“查询” 按钮列出此网站 NS 的子域名。查询百度的子域。百度不愧是一个大网站,有N多个子域,视觉上至少有几百个。

  通过网站可以查询某个网站有哪些子域,真的很方便。做一个本地查询工具会不会更方便?在本地运行程序,得到某个网站的子域名,结果就是提取了subdomain.php的查询结果。当然,也有安全方面的考虑。如果直接去网站查询,如果网站被人杀了又没有补丁,那就悲剧了。通过本地查询可以避免这种风险。

  

  考虑使用 Python,我知道该怎么做。大体思路是通过Python发送数据包模拟网站上的查询,获取查询结果页面的源代码,有规律地匹配源代码中的子域,最后输出结果。

  可以看到查询过程是通过POST向subdomain.php提交数据,其中百度就是我们查询的域名。

  数据需要在POST中提交。我使用的方法是 urllib 模块中的 urlopen() 函数。函数原型为:

  urlopen(网址,数据=无,代理=无)

  url是提交数据的具体地址,data是POST提交数据时提交的具体数据。默认情况下,数据是通过GET提交的,所以默认只有url的一个参数。经测试,subdomain.php POST提交数据时也会返回查询到的子域。如果将要查询的域名定义为变量域名,将要提交的数据定义为变量postdata,则POST提交的数据为:

  postdata='domain='+ 域名

  经过公司账号编辑器的测试,从返回的网页源代码中提取出查询到的子域名的正则表达式。

  特别是程序的描述部分是指别人写的一个python程序的描述部分的写法,在此谢谢解释。

  将代码保存为文件getsubdomain.py,放到C盘根目录下。按“Win”r键加R调出“运行”窗口,输入cmd回车打开命令行窗口。输入命令“cd\”,回车,切换到C盘根目录,输入命令“pythongetsubdomain.py”,回车查看程序说明。因为我在系统环境变量中已经添加了python.exe所在的目录,所以不需要进入python.exe所在的目录。如果没有将python.exe所在目录添加到系统环境变量中,可能需要输入python .exe所在的具体目录或将文件getsubdomain.py与文件python放在同一目录。可执行程序。

  如何使用小程序的格式为:

  python getsubdomain,py-d[domainl-o[文件名]

  其中-d为必选参数,domain对应的是你要查询的子域名网站的域名;-o 是可选参数,可以将查询结果保存到文件中,filename 是保存文件名时的文件。当然,默认情况下,屏幕上只打印查询结果,而不会将结果保存到文件中。

  测试程序是否可用,或查询百度的子域。输入命令回车,查询了850个子域,确实够用了。

  对比网页上的查询结果,我做了一个小小的改进:

  1.统计总共查询了多少个子域。

  2. 输出查询的子域时,是左对齐的,这样更美观一些。

  3.给每个查询的子域一个编号,在检测子域时不容易重复检测或漏检。

  如果查询的结果过多,则在命令窗口中将看不到前面的结果,只能看到第 554 个及以后的结果。

  这时候如果想查看所有的结果,可以将结果输出到一个文件中。比如我想把结果保存到当前目录下的baidu.txt文件中,输入命令。

  按回车后,在当前目录(C:\)中生成了baidu.txt文件。打开baidu.txt,可以看到所有查询到的子域。

  我们再查询一下网易的子域名,在命令行输入命令。查询的子域这么多,居然有2943个(当然个人博客的子域也很多)!

  看来小程序运行正常。

  我写的Python小程序是抓取网站查询子域的结果。代码写得不好。如果有任何错误或更好的写作方法,请随时聊天。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线