import pymysql
import requests
conn = pymysql.connect(host="localhost",user="root",passwd="root",db="leymax",charset="utf8")
cursor = conn.cursor()
classGetIp(object):
# 删除无效ip
defdelete_ip(self,ip):
sql ="delete from xiciproxy where ip='{0}'".format(ip)# format() 格式化字符串
cursor.execute(sql)
conn.commit()
return True
# 判断ip是否可用
defjudge_ip(self,type,ip,port):
http_url ="http://www.baidu.com"
proxy_url ="{0}://{1}:{2}".format(type,ip,port)
print("url:"+ proxy_url)
try:
proxy_dict = {
type: proxy_url, # type 为https 或者http 数据库存储的
}
response = requests.get(http_url,proxies=proxy_dict)
exceptExceptionase:
self.delete_ip(ip)
print("invalid ip and port")
return False
code = response.status_code
if code >=200 and code <300:
print("effective ip")
return True
else:
print("invalid ip and port")
self.delete_ip(ip)
return False
defget_random_ip(self):# 从数据库中随机获取一个可用的ip
random_sql ="""
SELECT type, ip, port FROM xiciproxy
ORDER BY RAND()
LIMIT 1
"""
result = cursor.execute(random_sql)
for ip_info in cursor.fetchall():
type = ip_info[0]
ip = ip_info[1]
port = ip_info[2]
judge_re =self.judge_ip(type,ip,port)
ifjudge_re:
return"{0}://{1}:{2}".format(type,ip,port)
else:
return self.get_random_ip()
if__name__ =="__main__":
get_ip = GetIp()
print(get_ip.get_random_ip())
网友评论