利用Python来配合Google来收集信息

独行   ·   发表于 2020-04-27 22:00:13   ·   技术文章

利用Python来配合Google来收集信息

  • 我们都知道,在进行渗透测试最重要的一个环节就是信息收集。说到信息收集怎么能不让能联想到谷歌以及谷歌语法呢?如果是人工的搜索并且提取相关信息无疑是一个工作量很大的一个事情。并且也是相当浪费时间的一个事情。那么我们如何快速的去除一些重复性工作呢?通过代码语言无疑是我们一个很好的选择,接下来我将介绍使用Python3 + Selenium + pymysql + Google来完成这样一个重复性任务。下面我们将以提取站点域名以及URL为例。

  • 首先我先介绍一下Selenium库以及pymysql是什么?Python3 以及Google我就不赘述了。简单的说明一下,selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。那么我们可以利用该库去操作WEB浏览器。pymysql 是python3当中操控数据库的一个组件。

  • 下面我们来分析,我们需要利用Selenium来自动运行WEB浏览器。我们需要在浏览器上做什么样的操作呢?输入谷歌url,在谷歌搜索栏输入谷歌语法,然后提取我们需要的内容。对不对?好的,那么我们脑子里面已经有了一个初步的概念。接下来,我们需要做的是告诉Selenium我们的想法,并且它需要做的事情。接下来,我们来看下面代码:

    #提取数据
    class driver_1(object):
     def __init__(self):
     self.driver = webdriver.Chrome('D:\chromedriver_win32\chromedriver.exe')
    
     #访问谷歌,搜索信息
     def logload_Chrome(self,search):
     self.driver.get('https://www.google.com/')
     #定位搜索栏位置
     Search = self.driver.find_element_by_name('q')
     self.driver.implicitly_wait(30)
     Search.send_keys(search)
     Search.send_keys(Keys.ENTER)
    
     #提取站点信息
     def Search_site(self,site,num):
     dict_name_url = {}
     now_site = 'site:' + '\'' + site + '\''
     self.logload_Chrome(now_site)
     #提取url和name
     for a in range(0,num):
     if a > 0 and a < num:
     self.driver.implicitly_wait(30)
     self.driver.find_element_by_css_selector('[valign=top] td:nth-last-child(1)').click()
     Result_name = self.driver.find_elements_by_css_selector('#search .g .r h3')
     Result_url = self.driver.find_elements_by_css_selector('#search .g .r>a[href]')
     i = 0
     while i < len(Result_name):
     dict_name_url[str(Result_name[i].text)] = str(Result_url[i].get_attribute('href'))
     i += 1
     else:
     for handle in self.driver.window_handles:
     self.driver.switch_to.window(handle)
     if str(site) in self.driver.title:
     self.driver.implicitly_wait(30)
     Result_name = self.driver.find_elements_by_css_selector('#search .g .r h3')
     Result_url = self.driver.find_elements_by_css_selector('#search .g .r>a[href]')
     i = 0
     while i < len(Result_name):
     dict_name_url[str(Result_name[i].text)] = str(Result_url[i].get_attribute('href'))
     i += 1
     return dict_name_url
    

    上述代码的作用是:登录谷歌并且输入搜索内容,并且通过循环来提取Google搜索出来的内容。

  • 当我们顺利的提取出内容的时候可以将内容放入数据库。这个时候,我们需要利用到pymysql库。通过它我们可以操控数据库。详细请看下面代码:

#保存数据信息
class Save_to_DB(object):
 #链接出入数据
 def connect(self,i,key,value):
 conn = pymysql.connect(
 host = 'localhost',
 user = 'root',
 password = 'Password@2020',
 database = 'suda'
 )
 #创建游标对象
 cursor = conn.cursor()
 try:
 cursor.execute("insert into information_site_suda values(%s,'%s','%s');" %(int(i),key,value))
 conn.commit()
 conn.close()
 except:
 conn.ping()
 cursor = conn.cursor()
 cursor.execute("insert into information_site values(%s,'%s','%s');" % (int(i), key, value))
 conn.commit()
 conn.close()

上述代码功能作用是将查询出来的数据存放入数据库当中。

  • 既然功能模块已经实现,接下来就是调用了。详细代码可以查看附件(注意:中的一些部分需要修改才能运行,不如,MYSQL数据库名等等)。该文章或许一些人看不懂。没有关系,文章当中的模块可以自己学习并不难。主要是希望各位了解到尽量不要去做重复性的劳动。学会利用工具。我一直认为代码功底是区分脚本小子和大牛的分水线。请各位一起加油!!!
用户名金币积分时间理由
admin 100.00 0 2020-04-28 14:02:08 附件奖励! 内容少了点

打赏我,让我更有动力~

Attachment List

Chrome_Search.7z   File Size:0.001M (Download Count:14)

1 Reply   |  Until 2020-4-28 | 733 View

hhades
发表于 2020-4-28

大佬 这个是python 代码把

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.