网站渗透常用Python小脚本查询同ip网站


Posted in Python onMay 08, 2017

旁站查询来源:
http://dns.aizhan.com
http://s.tool.chinaz.com/same
http://i.links.cn/sameip/
http://www.ip2hosts.com/
效果图如下:
以百度网站和小残博客为例:

网站渗透常用Python小脚本查询同ip网站

网站渗透常用Python小脚本查询同ip网站

PS:直接调用以上4个旁注接口查询同服服务器域名信息包含服务器类型 比如小残博客使用的是Tengine

#!/usr/bin/env python
#encoding: utf-8
import re
import sys
import json
import time
import requests
import urllib
import requests.packages.urllib3
from multiprocessing import Pool
from BeautifulSoup import BeautifulSoup
requests.packages.urllib3.disable_warnings()
 
headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20'}
 
def links_ip(host):  
  '''
  查询同IP网站
  '''
  ip2hosts = []
  ip2hosts.append("http://"+host)
  try:
    source = requests.get('http://i.links.cn/sameip/' + host + '.html', headers=headers,verify=False)
    soup = BeautifulSoup(source.text)
    divs = soup.findAll(style="word-break:break-all")
     
    if divs == []: #抓取结果为空
      print 'Sorry! Not found!'
      return ip2hosts 
    for div in divs:
      #print div.a.string
      ip2hosts.append(div.a.string)
  except Exception, e:
    print str(e)
    return ip2hosts
  return ip2hosts
 
def ip2host_get(host):
  ip2hosts = []
  ip2hosts.append("http://"+host)
  try:
    req=requests.get('http://www.ip2hosts.com/search.php?ip='+str(host), headers=headers,verify=False)
    src=req.content
    if src.find('result') != -1:
      result = json.loads(src)['result']
      ip = json.loads(src)['ip']
      if len(result)>0:
        for item in result:
          if len(item)>0:
            #log(scan_type,host,port,str(item))
            ip2hosts.append(item)
  except Exception, e:
    print str(e)
    return ip2hosts
  return ip2hosts
 
 
def filter(host):
  '''
    打不开的网站...
  '''
  try:
    response = requests.get(host, headers=headers ,verify=False)
    server = response.headers['Server']
    title = re.findall(r'<title>(.*?)</title>',response.content)[0]
  except Exception,e:
    #print "%s" % str(e)
    #print host
    pass
  else:
    print host,server
 
def aizhan(host):
  ip2hosts = []
  ip2hosts.append("http://"+host)
  regexp = r'''<a href="[^']+?([^']+?)/" rel="external nofollow"  target="_blank">\1</a>'''
  regexp_next = r'''<a href="http://dns.aizhan.com/[^/]+?/%d/" rel="external nofollow" >%d</a>'''
  url = 'http://dns.aizhan.com/%s/%d/'
 
  page = 1
  while True:
    if page > 2:
      time.sleep(1)  #防止拒绝访问
    req = requests.get(url % (host , page) ,headers=headers ,verify=False)
    try:
      html = req.content.decode('utf-8') #取得页面
      if req.status_code == 400:
        break
    except Exception as e:
      print str(e)
      pass
    for site in re.findall(regexp , html):
      ip2hosts.append("http://"+site)
    if re.search(regexp_next % (page+1 , page+1) , html) is None:
      return ip2hosts
      break
    page += 1
 
  return ip2hosts
 
def chinaz(host):
  ip2hosts = []
  ip2hosts.append("http://"+host)
  regexp = r'''<a href='[^']+?([^']+?)' target=_blank>\1</a>'''
  regexp_next = r'''<a href="javascript:" rel="external nofollow" val="%d" class="item[^"]*?">%d</a>'''
  url = 'http://s.tool.chinaz.com/same?s=%s&page=%d'
 
  page = 1
  while True:
    if page > 1:
      time.sleep(1)  #防止拒绝访问
    req = requests.get(url % (host , page) , headers=headers ,verify=False)
    html = req.content.decode('utf-8') #取得页面
    for site in re.findall(regexp , html):
      ip2hosts.append("http://"+site)
    if re.search(regexp_next % (page+1 , page+1) , html) is None:
      return ip2hosts
      break
    page += 1
  return ip2hosts
 
def same_ip(host):
  mydomains = []
  mydomains.extend(ip2host_get(host))
  mydomains.extend(links_ip(host))
  mydomains.extend(aizhan(host))
  mydomains.extend(chinaz(host))
  mydomains = list(set(mydomains))
  p = Pool()
  for host in mydomains:
    p.apply_async(filter, args=(host,))
  p.close()
  p.join()
 
 
if __name__=="__main__":
  if len(sys.argv) == 2:
    same_ip(sys.argv[1])
  else:
    print ("usage: %s host" % sys.argv[0])
    sys.exit(-1)

大家可以发挥添加或者修改任意查询接口。注意是这个里面的一些思路与代码。

Python 相关文章推荐
浅谈Python中函数的参数传递
Jun 21 Python
解决python报错MemoryError的问题
Jun 26 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
详解Python中的测试工具
Jun 09 Python
python实现列表的排序方法分享
Jul 01 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
python3 下载网络图片代码实例
Aug 27 Python
python中format函数如何使用
Jun 22 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
Python3如何使用tabulate打印数据
Sep 25 Python
python 高阶函数简单介绍
Feb 19 Python
Python获取当前路径实现代码
May 08 #Python
Django自定义分页与bootstrap分页结合
Feb 22 #Python
利用python写个下载teahour音频的小脚本
May 08 #Python
通过源码分析Python中的切片赋值
May 08 #Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 #Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 #Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 #Python
You might like
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
js 函数调用模式小结
2011/12/26 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
Python发送Email方法实例
2014/08/21 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
感恩节红领巾广播稿
2014/02/11 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
三八妇女节主持词
2015/07/04 职场文书