代理服务器验证工具

简介: 这里提供的是使用python3自己写程序来验证代理,而如果用现成的工具的话,参考一下这篇文章,写得很详细: 代理服务器验证工具下载及使用教程   下面进入正题 由于经常要使用代理服务器,而网上提供的代理服务器很多都是临时的,一个一个的手动验证费时费力,所以我就想用python3的urllib库来写一个服务器获取、验证工具。

这里提供的是使用python3自己写程序来验证代理,而如果用现成的工具的话,参考一下这篇文章,写得很详细:

代理服务器验证工具下载及使用教程

 

下面进入正题

由于经常要使用代理服务器,而网上提供的代理服务器很多都是临时的,一个一个的手动验证费时费力,所以我就想用python3的urllib库来写一个服务器获取、验证工具。

 

    首先,要找一个提供代理服务器的网站,我用的是http://5uproxy.net/,这个网站的代理服务器几乎每天都更新,所以效果应该是比较好的。我的思路是,先打开这个网站的页面,将页面的信息down下来,然后用正则表达式分析,找出其中的代理服务器和端口号,再用urllib.request.build_opener构造一个使用该代理服务器的opener,然后用这个opener去打开百度的页面,探测获取到的信息是否正确,如果正确,就说明代理服务器有效,输出代理服务器的IP、端口即可。

 

#!/usr/bin/env python   
#
coding=utf-8
import urllib
import http.cookiejar
import re
import socket
class OpenUrl:
def __init__(self):
self.result = ""


def openpage(self): # url为相对路径
try:
url = "http://www.baidu.com"
self.result = self.opener.open(url).read().decode("gb2312")
except urllib.error.HTTPError as ex :
self.mute.release()
self.result = "openpage error: %s"%ex
return False
except ssl.SSLError as ex:
self.mute.release()
self.result = "openage error: %s"%ex
return False

return self.result.find("京ICP证030173号")



def getHtmlTdInfo(self, context):
result = []
p = re.compile("/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3}[/w|/W]+?<td width=/"60/">/d{2,4}")
ret = p.findall(str(context))

if ret is None:
return None

for x in ret:
element = []
q = re.compile("^(/d{1,3}/./d{1,3}/./d{1,3}/./d{1,3})[/w|/W]+?(/d{2,4}){1}quot;)
subRet = q.search(x);
if subRet==None:
continue
element.append(subRet.group(1))
element.append(subRet.group(2))
result.append(element)
return result


def getAgencyIP(self,url=""):
socket.setdefaulttimeout(20) #20秒内没有打开web页面,就算超时

url="http://5uproxy.net/http_fast.html" #获取最新代理服务器
self.result = str(urllib.request.urlopen(url).read())
if self.result==None:
return
AgencyIP = self.getHtmlTdInfo(self.result)
print(len(AgencyIP))

url="http://5uproxy.net/http_anonymous.html" #获取匿名访问代理服务器
self.result = str(urllib.request.urlopen(url).read())
if self.result==None:
return
AgencyIP += self.getHtmlTdInfo(self.result)
print(len(AgencyIP))

url="http://5uproxy.net/http_non_anonymous.html" #获取透明访问代理服务器
self.result = str(urllib.request.urlopen(url).read())
if self.result==None:
return
AgencyIP += self.getHtmlTdInfo(self.result)
print(len(AgencyIP))

socket.setdefaulttimeout(5) #5内没有打开web页面,就算超时
if len(AgencyIP)==0:
print("获取代理服务器失败")
return
for x in AgencyIP:
if x[0]=="":
continue
try:
proxy_support = urllib.request.ProxyHandler({'http':'http://'+str(x[0])+':'+str(x[1])})
self.opener = urllib.request.build_opener(proxy_support, urllib.request.HTTPHandler)
urllib.request.install_opener(self.opener)
if self.openpage()==False:
x[0] = ""
x[1] = ""
continue
print("有效的代理服务器"+str(x[0])+":"+str(x[1]))
print("等待2秒")
time.sleep(2)
except:
continue


if __name__ == "__main__":
test = OpenUrl()
test.getAgencyIP()

 

目录
相关文章
|
3月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
109 9
|
4月前
|
监控 虚拟化 云计算
从物理到云:使用自动化工具简化服务器迁移流程
【10月更文挑战第4天】随着云计算的快速发展,越来越多的企业选择将物理服务器迁移到云环境以提高效率和降低成本。本文详细介绍了使用自动化工具简化从物理到云的服务器迁移流程的技术实现细节,并提供了代码示例。
207 6
|
2月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
151 6
|
4月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
91 5
Linux系统之安装Ward服务器监控工具
|
3月前
|
监控 Kubernetes 安全
如何设置一个有效的远程管理工具来简化服务器的维护工作?
如何设置一个有效的远程管理工具来简化服务器的维护工作?
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
135 3
|
5月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
73 4
|
5月前
|
监控 Kubernetes 安全
如何设置一个有效的远程管理工具来简化服务器的维护工作?
如何设置一个有效的远程管理工具来简化服务器的维护工作?
|
6月前
|
存储 安全 JavaScript
服务器验证Cookie
【8月更文挑战第21天】
111 1
|
6月前
|
监控 网络安全 数据安全/隐私保护
Mac服务器ssh连接工具
Mac服务器ssh连接工具
171 2