批量判断url或域名是否可以访问
批量获取域名的工具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或域名是否可以访问相关推荐
- 利用shell脚本批量判断目标ip存活情况
一.目的 有时候需要批量去判断目标ip是否存活,一个一个去试多麻烦所以写了个shell脚本去批量尝试,原理使用的是去ping目标ip,虽然这种方法受很多因素影响,比如网速,防火墙禁ping等,但是也是 ...
- mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。
最近做一个项目(项目是采用的第三方的内容php框架+mysql搭建的),项目中有个功能需要采集大量的文章数据,数据库中直接存储的是文章的网址(举例:www.xxx.com/article?id=- 所 ...
- url主机域名可以省略_接口自动化测试(三):关于URL
关于URL 说起URL,大家第一反应可能是这不就是一个地址吗,还能有什么门道? URL是Uniform Resource Locator的缩写,称为统一资源定位符.URL正是使用web浏览器访问web ...
- php正则表达式判断url,判断url的正则表达式
判断url的正则表达式判断url的正则表达式 @"^((https|http|ftp|rtsp|mms)?://)" + @"?(([0-9a-z_!~*'().& ...
- 【Nginx】判断URL中是否存在某个参数Parameter
前言 nginx 1.15.11(下面的代码在此版本测试通过) 判断URL中是否存在某个参数Parameter 假设,当URL中存在参数method=autoGenerateIndex(区分大小写)时 ...
- 威联通NAS通过宝塔面板实现域名统一端口访问
背景 家用的宽带是联通的,自带公网 IP ,但是封锁了 80 端口和 443 端口,无法隐藏端口进行访问.因为前段时间一直在给 NAS 增加服务,都是通过公网 IP + 端口的形式通过路由器的端口映射 ...
- Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····
2019独角兽企业重金招聘Python工程师标准>>> Ngninx默认虚拟主机 1.vim /usr/local/nginx/conf/nginx.conf //增加 2.incl ...
- php 判断是否是域名,用PHP判断顶级域名
在写电商圈排名系统时,其中一个重要的想法就是要判断顶级 二级域名:q.eb.cn 内页:http://yun.im/yunseo/621.html 其它等等. 而在统计排名时,只计算顶级域名的.其它非 ...
- 网址,URL,域名,IP地址,DNS,域名解析
网址,URL,域名,IP地址,DNS,域名解析 文章简介 一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文. 编写形式:QA 背景知识 互联网上的所有数据都是存储在主机(服务器)上互联 ...
最新文章
- 【 C 】高级字符串查找之 strspn 和 strcspn 的思考
- Hibernate:映射文件元素属性说明
- Python字符串常用操作
- php 取出多重数组中的一列_PHP获取数组中指定的一列实例
- java.lang.StackOverflowError递归的栈溢出错误
- 【报告分享】2021中国数字化全景图谱与创新企业研究报告:数字浪潮下的创新力量.pdf(附下载链接)...
- 如何使用 淘宝 NPM 镜像
- 今天,美团程序员的年终奖金可能没了
- 恢复Redis中主、从库宕机
- 【渝粤教育】国家开放大学2018年春季 0359-21T会计学原理 参考试题
- 设计模式(5)——单例模式的七种实现方式
- 【代码优化】方法签名及参数检查
- 华为端口聚合命令_华为汇聚交换机链路聚合配置命令
- Windows中的ping命令
- Android官方文档中文版
- 戴维斯分校 计算机硕士,2017年美国加州大学戴维斯分校研究生申请之计算机......
- 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。 输入格式: 一系列正整数,整数的范围是(0,100000)。如果输入
- 图像特征提取(颜色,纹理,形状)
- Failed to introspect Class [com.ssm.controller.OrderController] from ClassLoader [ParallelWebappClas
- nodejs基于微信小程序的图书销售商城系统 uniapp 小程序
热门文章
- 【LEACH协议】基于matlab蝴蝶优化算法WSN安全分簇路由设计【含Matlab源码 2567期】
- 常见安全设备功能对比
- 4 款适用于 Windows 的最佳免费 GIS 软件
- 将秒数转换成几分几秒
- 2021-12-11 WPF面试题 WPF中的命令设计模式是什么
- 验证码无法改变的问题(验证码看不清,换一个,却不起作用)
- 北京络捷斯特第三方物流信息系统技术解析(二) 订单录入-入库订单
- Confluence搭建文档
- oracle ebs实施伙伴,Oracle EBS 实施方法论扫盲: 什么是CRP(Confrence Room Pilot)
- Linux Tomcat下载