Python

通过谷歌搜索获取IP段 - IPD0g

字号+ 作者:wd0g 来源:转载 2016-12-17 09:04 我要评论( )

这个工具是啥? 通过谷歌搜索结果中的网站 获取IP后,生成IP段的工具 写这个工具是为了自己方便 干脆就发出来了 这个工具需要些什么? python环境: 3.4 需要模块:requ......

这个工具是啥?

通过谷歌搜索结果中的网站

获取IP后,生成IP段的工具

写这个工具是为了自己方便

干脆就发出来了

 

这个工具需要些什么?

python环境: >3.4

需要模块:requests re bs4 gzip

其他:需要翻墙(原本想用国内镜像,但是一般这种都不稳定,干脆就直接用谷歌了)

 

怎么用这个工具?

python ipd0g.py keyword 5

keyword是关键词

5是你要爬取结果的页数

爬取完毕后,会在当前目录下生成一个文件:

ips-keyword.txt

里面的结果就是ip段,默认生成的是B段(也没有选项可以生成C段什么的,我懒得写了)

看着咋样啊?

IPDDG

 

报错的原因

1:查看依赖的模块是否安装

2:检查VPN是否开启或是否能连接谷歌

3:谷歌搜索是否需要验证码

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/python
# -*- coding: utf-8 -*-
# -*- author: Wd0g  -*-
 
import requests, re, socket, sys
from bs4 import BeautifulSoup
 
 
class Bin:
    ipList = []
 
 
    def __init__(self):
        print("""
        ________  ____  ____  ______
       /  _/ __ \/ __ \/ __ \/ ____/
       / // /_/ / / / / / / / / __
     _/ // ____/ /_/ / /_/ / /_/ /
    /___/_/   /_____/\____/\____/
 
    # Code By Wd0g - www.wd0g.com
    # The results of the scan in ips-*.txt
    # argv[1]:keyword   argv[2]:pageNum
        """)
        if len(sys.argv) == 3:
            self.keyword = sys.argv[1]
            self.pageNum = int(sys.argv[2])
            self.run()
 
 
    # 访问网页
    def http_get(self, url):
        try:
            res = requests.get(url, verify=True)
        except Exception as e:
            return False
        try:
            data = res.content.decode('utf-8')
        except:
            try:
                data = res.content.decode('gbk')
            except:
                data = gzip.decompress(res.content).decode()
        return data
 
 
    # 取出域名
    def getDomains(self, data):
        try:
            soup = BeautifulSoup(data, 'html.parser')
        except:
            return []
        domainList = []
        for info in soup.find_all("h3",{'class':'r'}):
            url = info.a['href']
            try:
                domain = re.search(r'[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?',url).group()
                domainList.append(domain)
            except:
                pass
        return domainList
 
 
    # 获取IP,通过域名
    def getHost(self, domain):
        try:
            host = socket.gethostbyname(domain).split('.')
        except:
            host = False
        return host
 
 
    # 获取一页的
    def getPage(self, keyword, page):
        ips = []
        url = "https://www.google.com.hk/search?safe=strict&hl=zh-CN&site=webhp&source=hp&q=%s&start=%d" %(keyword,page*10)
        data = self.http_get(url)
        domainList = self.getDomains(data)
 
        for domain in domainList:
            host = self.getHost(domain)
            if host:
                ipStr = "%s.%s.1.1 %s.%s.255.254" %(host[0],host[1],host[0],host[1])
                if ipStr not in self.ipList and ipStr not in ips:
                    print('%-35s            %-15s' % (domain, ipStr))
                    ips.append(ipStr)
            else:
                print('%-35s            ' % domain)
 
        return ips
 
 
    # 获取多页
    def run(self):
        # 获取网页数据
        print(">>>Fetching data page...")
        for page in list(range(0, self.pageNum)):
            ips = self.getPage(self.keyword, page)
            self.ipList.extend(ips)
 
        # 保存数据到本地
        print(">>>Save data to local...")
        path = 'ips.txt'
        file = open(path, 'a+', encoding='utf-8')
        for ips in self.ipList:
            file.write(ips + "\n")
        file.close()
        print('fileName is %s' % path)
 
Bin()

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Python/440.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~