python做脚本容易被检测吗_用不到 200 行的 Python 代码编写一个批量检测 URL 是否可以访问的脚本...

最近有一个批量检测 URL 是否可以访问的需求,于是找了一个 Python 脚本来实现这个需求( Python 2.7+ 测试有效)。

参考原文

https://ccie.lol/knowledge-base/python-testing-url-2/

这个脚本会对每个 URL 检测四次,其中 http 检测两次,https 检测两次。之所以是各两次是因为会使用两个包来检测( urllib 和 urllib2 )。即:

urllib 检测 http

urllib 检测 https

urllib2 检测 http

urllib2 检测 https

共四次。

首先是包的导入和浏览器所使用的 User-Agent 的定义:

# coding=utf-8

import httplib, urllib, urllib2, ssl, time, os, threading

HEADERS = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3298.4 Safari/537.36'}

因为增加了多线程,所以多引入了一个名为 threading 的包。

紧接着是 show_status_urllib(url) 和 show_status_urllib2(url) 两个检测方法,这里面捕获了大量的异常;以及一个用于处理所返回的网页状态码的函数 return_code(function_name, response) :

def show_status_urllib(url):

function_name = 'urllib'

try:

response = urllib.urlopen(url)

except IOError, e:

return False, function_name + ' : IOError - ' + e.message

except ssl.CertificateError, e:

return False, function_name + ' : CertificateError - ' + e.message

except httplib.BadStatusLine, e:

return False, function_name + ' : httplib.BadStatisLine - ' + e.message

else:

return return_code(function_name, response)

def show_status_urllib2(url):

function_name = 'urllib2'

try:

# request = urllib2.Request(url)

request = urllib2.Request(url, '', HEADERS)

response = urllib2.urlopen(request)

except urllib2.HTTPError, e:

return False, function_name + ' : HTTPError code ' + str(e.code)

except urllib2.URLError, e:

return False, function_name + ' : URLError - ' + str(e.reason)

ex

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值