我们都知道,在进行渗透测试最重要的一个环节就是信息收集。说到信息收集怎么能不让能联想到谷歌以及谷歌语法呢?如果是人工的搜索并且提取相关信息无疑是一个工作量很大的一个事情。并且也是相当浪费时间的一个事情。那么我们如何快速的去除一些重复性工作呢?通过代码语言无疑是我们一个很好的选择,接下来我将介绍使用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()
上述代码功能作用是将查询出来的数据存放入数据库当中。
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
admin | 100.00 | 0 | 2020-04-28 14:02:08 | 附件奖励! 内容少了点 |
打赏我,让我更有动力~
Chrome_Search.7z 文件大小:0.001M (下载次数:15)
© 2016 - 2024 掌控者 All Rights Reserved.
hhades
发表于 2020-4-28
大佬 这个是python 代码把
评论列表
加载数据中...