批量获取域名的工具subDomainsBrute好用,但是获取到的域名太多,不清楚每个域名是否都可以正常访问,所以使用python写了一个工具,来判断http或https页面是否可以访问,以及访问的标题内容。

代码如下,欢迎交流,需要自取。

"""
======================
@Auther:CacheYu
@Time:2019/10/24 下午
======================
"""
#!usr/bin/python
#coding:utf-8from bs4 import BeautifulSoup
import urllib.request
import requests
import time
import io
import sys#python3
# 判断是否能访问;获取标题;进行报错处理
def exception(url):try:r = requests.get(url=url)time.sleep(0.01)if(r.status_code == 200):#判断获取的r的编码方式,如果是utf-8的话,则再进行utf-8编码(由于网页的原因,部分utf-8需要再次编码,否则,会出现乱码)if(r.apparent_encoding=='utf-8'):r.encoding = 'utf-8'soup = BeautifulSoup(r.text, 'lxml')title = soup.title.text.replace(' ','').replace('\t','').replace('\n','').replace('\r','')print(url+'\t'+title)else:   time.sleep(2)print(url+'\t访问页面出错')   except requests.exceptions.ConnectionError: time.sleep(2)print(url+'\t未知的服务器')except requests.exceptions.ConnectTimeout:time.sleep(2)print(url+'\t连接、读取超时')# 获取每行url
def urls(lines):for line in lines:# 判断是否为空行if (line =='\n'):passelse:line = line.replace(' ','').replace('\t','').replace('\n','')if(line[0:4] == 'http'):exception(line)else:         url_h = 'http://'+lineexception(url_h)url_hs = 'https://'+lineexception(url_hs)if __name__ =='__main__':#test.txt是存放url或host的文件file = open('test.txt')lines = file.readlines()print('开始检查:\nurl\t标题')urls(lines)file.close()

写的过程中,由于不熟悉,两个地方思考了很久。
一个是获取url的内容,是使用urllib.request还是使用request。已转发文章。
一个是由于获取了不同网站的内容,当提取标题的时候,涉及到如何统一编码。python3目前基本上解决了大部分编码问题,由于本次的编码有点特殊,同样的utf-8编码,一个页面可以正常转换,一个却变成乱码,如果均将编码转成utf-8,则其他编码格式,例如GB2312编码的网站则乱码显示。

python2和python3的一些不同
1) python2中默认使用ascii,python3中默认使用utf-8
2) Python2中,str就是编码后的结果bytes,str=bytes,所以s只能decode。
3) python3中的字符串与python2中的u'字符串',都是unicode,只能encode,所以无论如何打印都不会乱码,因为可以理解为从内存打印到内存,即内存->内存,unicode->unicode
4) python3中,str是unicode,当程序执行时,无需加u,str也会被以unicode形式保存新的内存空间中,str可以直接encode成任意编码格式,s.encode('utf-8'),s.encode('gbk')

部分代码参考地址:https://www.cnblogs.com/DicksonJYL/p/9464316.html

编码图片来源:https://www.cnblogs.com/schut/p/8406897.html

批量判断url或域名是否可以访问相关推荐

  1. 利用shell脚本批量判断目标ip存活情况

    一.目的 有时候需要批量去判断目标ip是否存活,一个一个去试多麻烦所以写了个shell脚本去批量尝试,原理使用的是去ping目标ip,虽然这种方法受很多因素影响,比如网速,防火墙禁ping等,但是也是 ...

  2. mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。

    最近做一个项目(项目是采用的第三方的内容php框架+mysql搭建的),项目中有个功能需要采集大量的文章数据,数据库中直接存储的是文章的网址(举例:www.xxx.com/article?id=- 所 ...

  3. url主机域名可以省略_接口自动化测试(三):关于URL

    关于URL 说起URL,大家第一反应可能是这不就是一个地址吗,还能有什么门道? URL是Uniform Resource Locator的缩写,称为统一资源定位符.URL正是使用web浏览器访问web ...

  4. php正则表达式判断url,判断url的正则表达式

    判断url的正则表达式判断url的正则表达式 @"^((https|http|ftp|rtsp|mms)?://)" + @"?(([0-9a-z_!~*'().& ...

  5. 【Nginx】判断URL中是否存在某个参数Parameter

    前言 nginx 1.15.11(下面的代码在此版本测试通过) 判断URL中是否存在某个参数Parameter 假设,当URL中存在参数method=autoGenerateIndex(区分大小写)时 ...

  6. 威联通NAS通过宝塔面板实现域名统一端口访问

    背景 家用的宽带是联通的,自带公网 IP ,但是封锁了 80 端口和 443 端口,无法隐藏端口进行访问.因为前段时间一直在给 NAS 增加服务,都是通过公网 IP + 端口的形式通过路由器的端口映射 ...

  7. Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····

    2019独角兽企业重金招聘Python工程师标准>>> Ngninx默认虚拟主机 1.vim /usr/local/nginx/conf/nginx.conf //增加 2.incl ...

  8. php 判断是否是域名,用PHP判断顶级域名

    在写电商圈排名系统时,其中一个重要的想法就是要判断顶级 二级域名:q.eb.cn 内页:http://yun.im/yunseo/621.html 其它等等. 而在统计排名时,只计算顶级域名的.其它非 ...

  9. 网址,URL,域名,IP地址,DNS,域名解析

    网址,URL,域名,IP地址,DNS,域名解析 文章简介 一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文. 编写形式:QA 背景知识 互联网上的所有数据都是存储在主机(服务器)上互联 ...

最新文章

  1. 【 C 】高级字符串查找之 strspn 和 strcspn 的思考
  2. Hibernate:映射文件元素属性说明
  3. Python字符串常用操作
  4. php 取出多重数组中的一列_PHP获取数组中指定的一列实例
  5. java.lang.StackOverflowError递归的栈溢出错误
  6. 【报告分享】2021中国数字化全景图谱与创新企业研究报告:数字浪潮下的创新力量.pdf(附下载链接)...
  7. 如何使用 淘宝 NPM 镜像
  8. 今天,美团程序员的年终奖金可能没了
  9. 恢复Redis中主、从库宕机
  10. 【渝粤教育】国家开放大学2018年春季 0359-21T会计学原理 参考试题
  11. 设计模式(5)——单例模式的七种实现方式
  12. 【代码优化】方法签名及参数检查
  13. 华为端口聚合命令_华为汇聚交换机链路聚合配置命令
  14. Windows中的ping命令
  15. Android官方文档中文版
  16. 戴维斯分校 计算机硕士,2017年美国加州大学戴维斯分校研究生申请之计算机......
  17. 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。 输入格式: 一系列正整数,整数的范围是(0,100000)。如果输入
  18. 图像特征提取(颜色,纹理,形状)
  19. Failed to introspect Class [com.ssm.controller.OrderController] from ClassLoader [ParallelWebappClas
  20. nodejs基于微信小程序的图书销售商城系统 uniapp 小程序

热门文章

  1. 【LEACH协议】基于matlab蝴蝶优化算法WSN安全分簇路由设计【含Matlab源码 2567期】
  2. 常见安全设备功能对比
  3. 4 款适用于 Windows 的最佳免费 GIS 软件
  4. 将秒数转换成几分几秒
  5. 2021-12-11 WPF面试题 WPF中的命令设计模式是什么
  6. 验证码无法改变的问题(验证码看不清,换一个,却不起作用)
  7. 北京络捷斯特第三方物流信息系统技术解析(二) 订单录入-入库订单
  8. Confluence搭建文档
  9. oracle ebs实施伙伴,Oracle EBS 实施方法论扫盲: 什么是CRP(Confrence Room Pilot)
  10. Linux Tomcat下载