随机ip完整版

import pymysql
import requests


class GetRandomIP():
    def getip(self):
        conn = pymysql.connect(host="localhost", port=3306, user="root", password="liuzhiyu", db="python77",
                               charset="utf8")
        cursor = conn.cursor()
        # sql='select ipType,ipAddress,ipPort from proxyServer ORDER BY RAND() LIMIT 1'
        sql = 'select * from proxyServer ORDER BY RAND() LIMIT 1'
        cursor.execute(sql)
        one_ip_data = cursor.fetchall()[0]
        #eg:one_ip_data=(83, 'socks4/5', '113.121.245.231', '6675')
        print('-'*50)
        print('本次从数据库中获得的ip',one_ip_data)
        cursor.close()
        conn.close()
        return_val=self.verifyip(one_ip_data)
        # successIp='{}://{}:{}'.format(one_ip_data[1], one_ip_data[2], one_ip_data[3])
        if return_val:
            return '{}://{}:{}'.format(one_ip_data[1], one_ip_data[2], one_ip_data[3])
        else:
            return 0

    #验证ip是否有效
    def verifyip(self,one_ip_data):
        if one_ip_data[1]!='http' and one_ip_data[1]!='https':
            self.delip(one_ip_data)
            return 0
        type_ipaddress_port = '{}://{}:{}'.format(one_ip_data[1], one_ip_data[2], one_ip_data[3])
        print('验证ip: {} 是否有效:'.format(type_ipaddress_port))
        try:
            response=requests.get('http://jsonip.com',proxies={one_ip_data[1]:type_ipaddress_port},timeout=3)  #proxies={'HTTP':'HTTP://106.56.102.139:8070'}
            if response.json()['ip']==one_ip_data[2]:
                print('ip:{}有效 √'.format(one_ip_data))
                return 1
            else:
                print('ip:{}无效 X'.format(one_ip_data))
                return 0
        except Exception as e:
            print('ip:{}无效 X'.format(one_ip_data))
            self.delip(one_ip_data)
            return 0

    def delip(self,one_ip_data):
        conn = pymysql.connect(host="localhost", port=3306, user="root", password="liuzhiyu", db="python77",
                               charset="utf8")
        cursor = conn.cursor()
        sql = 'delete from proxyServer where id=%s'
        cursor.execute(sql,(one_ip_data[0]))
        conn.commit()
        print('删除ip:{}'.format(one_ip_data))
        cursor.close()
        conn.close()

    def mainfunc(self):
        ip = self.getip()
        while not ip:
            ip = self.getip()
        print('->', ip)
        return ip


if __name__ == '__main__':
    gr = GetRandomIP()
    ip=gr.mainfunc()
    print('----------->',ip)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值