第一种方法是使用telnetlib

import telnetlib
import requests
from lxml import etree #解析此url页面的IP
url = 'http://ip.geiwoxiao.com/'
headers = {
'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
} #使用requests请求指定页面,返回html页面
html = requests.get(url=url,headers=headers).text #使用xpath解析数据,拿到IP及端口
tree = etree.HTML(html)
ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0]
ip_list = ip_text.split('\r\n') #循环ip_list,取出每个IP做检测是否可用
for i in ip_list:
ip,port = i.split(':')
print(ip,port)
try:
telnetlib.Telnet(ip,port,timeout=5)
print('可用')
except Exception as e:
print(e,'不可用')

第二种方法

from lxml import etree
import requests #解析此url页面的IP
url = 'http://ip.geiwoxiao.com/'
#使用requests请求指定页面,返回html页面
html = requests.get(url=url).text
headers = {
'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
}
#使用xpath解析数据,拿到IP及端口
tree = etree.HTML(html)
ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0]
ip_list = ip_text.split('\r\n')
use_ip = []
#循环ip_list,取出每个IP做检测是否可用
for ip in ip_list:
try:
res = requests.get(url='http://icanhazip.com/',proxies={'http':ip},timeout=5).text
print(res.strip())
if res.strip() in ip:
print(ip,'可用')
#将可用IP添加到列表中
use_ip.append(ip)
else:
print(ip,'不可用')
except Exception as e:
print(ip,'超时')
#查看可用的use_ip
print(use_ip)

第三种是访问百度

from lxml import etree
import requests #解析此url页面的IP
url = 'http://ip.geiwoxiao.com/'
#使用requests请求指定页面,返回html页面
html = requests.get(url=url).text
headers = {
'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
}
#使用xpath解析数据,拿到IP及端口
tree = etree.HTML(html)
ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0]
ip_list = ip_text.split('\r\n')
use_ip = []
#循环ip_list,取出每个IP做检测是否可用
for ip in ip_list:
try:
res = requests.get(url='https://www.baidu.com/',headers=headers,proxies={'https':ip},timeout=5).text
print(len(res))#判断URL返回的数据长度是否大于5000
except Exception as e:
print(ip,e)

对代理IP进行检测是否可用的更多相关文章

  1. python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)

    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_usera ...

  2. java代理ip有效检测

    java实现代理ip有效检测,依赖Apache的HttpClient   正式版:       /**        * 批量代理IP有效检测        *        * @param pro ...

  3. python获取代理IP并测试是否可用

    # coding: utf-8 import urllib2 import re import time def getDL(page): url = 'http://www.xicidaili.co ...

  4. java 检测代理IP是否准确

    我这里提供2个方法都可以实现:第一个是createIPAddress()和convertStreamToString() import java.io.IOException; import java ...

  5. 可能是一份没什么用的爬虫代理IP指南

    写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...

  6. python代理池的构建5——对mongodb数据库里面代理ip检查

    上一篇博客地址:python代理池的构建4--mongdb数据库的增删改查 一.对数据库里面代理ip检查(proxy_test.py) #-*-coding:utf-8-*- ''' 目的:检查代理I ...

  7. Java 验证代理ip

    原文地址:http://www.cnblogs.com/junrong624/p/5416503.html 1 import java.io.IOException; import java.io.I ...

  8. Python学习笔记六(免费获取代理IP)

    为获取网上免费代理IP,闲的无聊,整合了一下,免费从三个代理网站获取免费代理IP,目的是在某一代理网站被限制时,仍可从可以访问的其他网站上获取代理IP.亲测可用哦!^_^  仅供大家参考,以下脚本可添 ...

  9. 利用Python爬取可用的代理IP

    前言 就以最近发现的一个免费代理IP网站为例:http://www.xicidaili.com/nn/.在使用的时候发现很多IP都用不了. 所以用Python写了个脚本,该脚本可以把能用的代理IP检测 ...

随机推荐

  1. flutter中修改键盘状态

    当用户进行表格输入时,为更方便的方便用户操作,我们需要设置键盘状态方便用户点击,如当表格填写完成时,用户可以直接点击键盘下面的"完成"状态完成提交. 实现如下: TextFormF ...

  2. java 内存泄露的几种情况

    内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间. 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出.内存溢出 out of memory ...

  3. C# Monitor.TryEnter 源码跟踪

    source: Monitor 获取指定对象的独占锁. [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical, __Dyn ...

  4. 分治算法:Tromino谜题,L型覆盖

    1 public class Tromino { 2 3 static int num = 2; 4 //x 对应 第二维 5 //y 对应 第一维 6 static int[][] panel = ...

  5. for in和for of的简单区别

    //for in可以遍历数组和对象,但是for of只能遍历数组,不可以遍历对象 var arr = [1,4,5,6,7,8]; var obj = { name:'za', age:19, say ...

  6. Spring BeanDefinition

    定义 /** * A BeanDefinition describes a bean instance, which has property values, * constructor argume ...

  7. 简单明了的Java线程池

    线程池 线程池从功能上来看,就是一个任务管理器.在Java中,Executor接口是线程池的根接口,其中只包含一个方法: Executor void execute(Runnable command) ...

  8. Redis++:Redis 内存爆满 之 淘汰策略

    前言: 我们的redis使用的是内存空间来存储数据的,但是内存空间毕竟有限,随着我们存储数据的不断增长,当超过了我们的内存大小时,即在redis中设置的缓存大小(maxmeory 4GB),redis ...

  9. redis存取数据Set

    一.set集合无序不重复 二.存取数据 1. 2. 3. 4.set集合差集运算 找出并返回前面集合有后面没有的元素: 5.set集合交际运算 6.并集运算 sunion 7.随机弹出一个元素,因为s ...

  10. centos7关于防火墙的一些操作

    防火墙相关 # 检查防火墙状态 systemctl status firewalld # 开启防火墙 systemctl start firewalld # 关闭防火墙 systemctl stop ...