资讯专栏INFORMATION COLUMN

使用python爬虫实现子域名探测问题

89542767 / 505人阅读

  大家都知道,在python当中,需要面对是各种各样的问题,比如我们需要用到的是:使用python爬虫实现子域名探测,这种技能是值得我们去进行学习的,但是学习的话,内容还是比较多的,下面就具体的内容,给大家做出一个详细解答。


  前言


  意义:子域名枚举是为一个或多个域查找子域的过程,它是信息收集阶段的重要组成部分。


  实现方法:使用爬虫与字典爆破。


  一、爬虫


  1.ip138


  def search_2(domain):
  res_list=[]
  headers={
  'Accept':'*/*',
  'Accept-Language':'en-US,en;q=0.8',
  'Cache-Control':'max-age=0',
  'User-Agent':'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.116 Safari/537.36',
  'Connection':'keep-alive',
  'Referer':'http://www.baidu.com/'
  }
  results=requests.get('https://site.ip138.com/'+domain+'/domain.htm',headers=headers)
  soup=BeautifulSoup(results.content,'html.parser')
  job_bt=soup.findAll('p')
  try:
  for i in job_bt:
  link=i.a.get('href')
  linkk=link[1:-1]
  res_list.append(linkk)
  print(linkk)
  except:
  pass
  print(res_list[:-1])
  if __name__=='__main__':
  search_2("jd.com")


  返回结果:

01.png

  2.bing


  def search_1(site):
  Subdomain=[]
  headers={
  'Accept':'*/*',
  'Accept-Language':'en-US,en;q=0.8',
  'Cache-Control':'max-age=0',
  'User-Agent':'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.116 Safari/537.36',
  'Connection':'keep-alive',
  'Referer':'http://www.baidu.com/'
  }
  for i in range(1,16):
  url="https://cn.bing.com/search?q=site%3A"+site+"&go=Search&qs=ds&first="+str(
  (int(i)-1)*10)+"&FORM=PERE"
  #conn=requests.session()
  #conn.get('http://cn.bing.com',headers=headers)
  #html=conn.get(url,stream=True,headers=headers)
  html=requests.get(url,stream=True,headers=headers)
  soup=BeautifulSoup(html.content,'html.parser')
  #print(soup)
  job_bt=soup.findAll('h2')
  for i in job_bt:
  link=i.a.get('href')
  print(link)
  if link in Subdomain:
  pass
  else:
  Subdomain.append(link)
  print(Subdomain)
  if __name__=='__main__':
  search_1("jd.com")

  返回结果:

02.png

  二、通过字典进行子域名爆破


  def dict(url):
  for dict in open('dic.txt'):#这里用到子域名字典文件dic.txt
  dict=dict.replace('\n',"")
  zym_url=dict+"."+url
  try:
  ip=socket.gethostbyname(zym_url)
  print(zym_url+"-->"+ip)
  time.sleep(0.1)
  except Exception as e:
  #print(zym_url+"-->"+ip+"--error")
  time.sleep(0.1)
  if __name__=='__main__':
  dict("jd.com")

  返回结果:

03.png

  三、python爬虫操作步骤


  1.写出请求头headers与目标网站url


  headers={
  'User-Agent':"Mozilla/5.0(Windows NT 10.0)AppleWebKit/537.36(KHTML,like Gecko)Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
  }
  url="https://site.ip138.com/"


  2.生成请求


  get:res=requests.get(url+domain,headers=headers)
  post:res=requests.post(url+domain,headers=headers,data=data)


  3.抓取数据


 soup=BeautifulSoup(res.content,'html.parser')#以html解析器解析res的内容

  此时print(soup),返回结果:

04.png

  4.分析源码,截取标签中内容


  1.通过分析源码,确定需要提取p标签中的内容:

  job_bt=soup.findAll('p')


  此时print(job_bt),返回结果:

05.png

  2.继续提取a标签内属性为href的值:


  try:
  for i in job_bt:
  link=i.a.get('href')
  linkk=link[1:-1]
  res_list.append(linkk)
  print(linkk)
  except:
  pass


  得结果:

06.png

  3.再进行截取:

  res_list[:-1]


  得结果:

07.png

  四、爬虫一些总结


  1.抓取数据,生成soup

  soup=BeautifulSoup(res.content,'html.parser')#以html解析器解析res的内容


  2.从文档中获取所有文字内容


 print(soup.get_text())


  3.从文档中找到所有<a>标签的链接


  for link in soup.find_all('a'):
  print(link.get('href'))


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来更多的帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128252.html

相关文章

  • 爬虫工程师的运维入门之路:dnspython学习笔记

    摘要:通过域名,最终得到该域名对应的地址的过程叫做域名解析或主机名解析。协议运行在协议之上,使用端口号。在文档中对有规范说明,对的动态更新进行说明,对查询的反向缓存进行说明。 你们是否跟我一样,不知道什么是DNS,在这里,首先普及一下什么是DNS DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网...

    LiangJ 评论0 收藏0
  • Evil Python

    摘要:用将倒放这次让我们一个用做一个小工具将动态图片倒序播放发现引力波的机构使用的包美国科学家日宣布,他们去年月首次探测到引力波。宣布这一发现的,是激光干涉引力波天文台的负责人。这个机构诞生于上世纪年代,进行引力波观测已经有近年。 那些年我们写过的爬虫 从写 nodejs 的第一个爬虫开始陆陆续续写了好几个爬虫,从爬拉勾网上的职位信息到爬豆瓣上的租房帖子,再到去爬知乎上的妹子照片什么的,爬虫...

    Turbo 评论0 收藏0
  • Python-爬虫工程师-面试总结

    摘要:内存池机制提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。为了加速的执行效率,引入了一个内存池机制,用于管理对小块内存的申请和释放。 注:答案一般在网上都能够找到。1.对if __name__ == main的理解陈述2.python是如何进行内存管理的?3.请写出一段Python代码实现删除一个list里面的重复元素4.Python里面如何拷贝一个对象?...

    antz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<