Python实现检测代理IP是否可以翻墙

那堵墙着实可恨!身处IT这个圈子,经常需要用gg查资料(你也可以用来访问1024,^_^...)。当然,你也可以用百度。其实也不是我不爱用百度,是有缘由的,且听我细细道来。有一次闲得蛋疼,想看看会不会有人抄袭我的博客(尽管博客学得不咋地),于是百度了一下,结果是惊人的。我发现我自己写的博客,即使是拿整个标题去搜索,往往搜不到,搜到的是一堆爬虫爬去的结果。具体是哪些,这里就不说了,各自可以拿自己的博客试一下。以前总是手工收集几个IP用一段时间,失效了以后再重新收集几个,如此反复,烦!于是,想着写个爬虫抓取代理IP,然后每次直接数据库里面找几个出来用就行了。然而,爬虫爬过来的IP有很多已经失效了。这时又沦落为手工测试,这不是为自己增添更多的烦恼吗?于是写个检测代理IP是否可用的程序,让程序帮我检测好了。这样每次我就可以拿到可用的代理IP了。由于爬虫是用scrapy写的,为了方便维护,IP检测就作为scrapy爬虫里面的一部分好了。于是有了下面这段检测的程序:

1、创建文件:checkproxy.py

#coding=utf-8

import urllib2
import urllib
import time
import socket

ip_check_url = 'http://www.google.com.hk/'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'
socket_timeout = 30

# Check proxy
def check_proxy(protocol, pip):
  try:
    proxy_handler = urllib2.ProxyHandler({protocol:pip})
    opener = urllib2.build_opener(proxy_handler)
    # opener.addheaders = [('User-agent', user_agent)] #这句加上以后无法正常检测,不知道是什么原因。
    urllib2.install_opener(opener)

    req = urllib2.Request(ip_check_url)
    time_start = time.time()
    conn = urllib2.urlopen(req)
    # conn = urllib2.urlopen(ip_check_url)
    time_end = time.time()
    detected_pip = conn.read()

    proxy_detected = True

  except urllib2.HTTPError, e:
    print "ERROR: Code ", e.code
    return False
  except Exception, detail:
    print "ERROR: ", detail
    return False

  return proxy_detected

def main():
  socket.setdefaulttimeout(socket_timeout)

  print

  protocol = "http"
  current_proxy = "212.82.126.32:80"
  proxy_detected = check_proxy(protocol, current_proxy)
  if proxy_detected:
    print (" WORKING: " + current_proxy)
  else:
    print " FAILED: %s " % ( current_proxy, )

if __name__ == '__main__':
  main()

2、测试:

[root@bogon proxyipspider]# python checkproxy.py 

 WORKING: 212.82.126.32:80

  当然,这只是程序的一个原型,真正检测的程序还需要结合数据库或文件操作来完成。代理IP检测出来了,那么剩下的就是设置了。设置好以后,尽情地gg吧。1024你想看多久就看多久,不过还是不要看多为好,你懂的。如果你想上脸谱、油土鳖和推特,这些就靠你自己了,这里只是gg而已。

  程序猿嘛,总是想通过自己的双手来解决点问题。那颗change the world的心没有变,就像博客园的口号那样“代码改变世界”。看到哪个东西不爽,自己造一个吧。IT界这样的例子太多了,天天用的Vi、github等等。好了,就到这,1024去,走起。。。

  那道墙着实可恨!

(0)

相关推荐

  • 尝试使用Python多线程抓取代理服务器IP地址的示例

    这里以抓取 http://www.proxy.com.ru 站点的代理服务器为例,代码如下: #!/usr/bin/env python #coding:utf-8 import urllib2 import re import threading import time import MySQLdb rawProxyList = [] checkedProxyList = [] #抓取代理网站 targets = [] for i in xrange(1,42): target = r"htt

  • Python爬虫代理IP池实现方法

    在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来.不过呢,闲暇时间手痒,所以就想利用一些免费的资源搞一个简单的代理池服务. 1.问题 代理IP从何而来? 刚自学爬虫的时候没有代理IP就去西刺.快代理之类有免费代理的网站去爬,还是有个别代理能用.当然,如果你有更好的代理接口也可以自己接入. 免费代理的采集也很简单,无非就是:访问页面页面 -> 正则/xpath提

  • 利用Python爬取可用的代理IP

    前言 就以最近发现的一个免费代理IP网站为例:http://www.xicidaili.com/nn/.在使用的时候发现很多IP都用不了. 所以用Python写了个脚本,该脚本可以把能用的代理IP检测出来. 脚本如下: #encoding=utf8 import urllib2 from bs4 import BeautifulSoup import urllib import socket User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv

  • 利用python爬取软考试题之ip自动代理

    前言 最近有个软件专业等级考试,以下简称软考,为了更好的复习备考,我打算抓取www.rkpass.cn网上的软考试题. 首先讲述一下我爬取软考试题的故(keng)事(shi).现在我已经能自动抓取某一个模块的所有题目了,如下图: 目前可以将信息系统监理师的30条试题记录全部抓取下来,结果如下图所示: 抓取下来的内容图片: 虽然可以将部分信息抓取下来,但是代码的质量并不高,以抓取信息系统监理师为例,因为目标明确,各项参数清晰,为了追求能在短时间内抓取到试卷信息,所以并没有做异常处理,昨天晚上填了很

  • 通过Python爬虫代理IP快速增加博客阅读量

    写在前面 题目所说的并不是目的,主要是为了更详细的了解网站的反爬机制,如果真的想要提高博客的阅读量,优质的内容必不可少. 了解网站的反爬机制 一般网站从以下几个方面反爬虫: 1. 通过Headers反爬虫 从用户请求的Headers反爬虫是最常见的反爬虫策略.很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer). 如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agen

  • Python实现检测代理IP是否可以翻墙

    那堵墙着实可恨!身处IT这个圈子,经常需要用gg查资料(你也可以用来访问1024,^_^...).当然,你也可以用百度.其实也不是我不爱用百度,是有缘由的,且听我细细道来.有一次闲得蛋疼,想看看会不会有人抄袭我的博客(尽管博客学得不咋地),于是百度了一下,结果是惊人的.我发现我自己写的博客,即使是拿整个标题去搜索,往往搜不到,搜到的是一堆爬虫爬去的结果.具体是哪些,这里就不说了,各自可以拿自己的博客试一下.以前总是手工收集几个IP用一段时间,失效了以后再重新收集几个,如此反复,烦!于是,想着写个

  • Python爬虫设置代理IP(图文)

    在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力. 如果你一直用同一个代理ip爬取这个网页,很有可能ip会被禁止访问网页,所以基本上做爬虫的都躲不过去ip的问题. 1.我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常爬取数据,一切看起来都是那么美好,然而不久之后可能会出现错误,比如 403 Forbidden,这时候你打开网页一看,可能会看到"您的 IP 访问频率太高"这样的提示.出现这

  • python爬虫构建代理ip池抓取数据库的示例代码

    爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检测是否可用,可用保存,通过函数get_proxies可以获得ip,如:{'HTTPS': '106.12.7.54:8118'} 下面放上源代码,并详细注释: import requests from lxml import etree from requests.packages import u

  • python爬虫之代理ip正确使用方法实例

    目录 代理ip原理 输入网址后发生了什么呢? 代理ip做了什么呢? 为什么要用代理呢? 爬虫代码中使用代理ip 检验代理ip是否生效 未生效问题排查 1.请求协议不匹配 2.代理失效 总结 主要内容:代理ip使用原理,怎么在自己的爬虫里设置代理ip,怎么知道代理ip是否生效,没生效的话哪里出了问题,个人使用的代理ip(付费). 代理ip原理 输入网址后发生了什么呢? 1.浏览器获取域名 2.通过DNS协议获取域名对应服务器的ip地址 3.浏览器和对应的服务器通过三次握手建立TCP连接 4.浏览器

  • Python爬虫设置代理IP的方法(爬虫技巧)

    在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,这里讲述一个爬虫技巧,设置代理IP. (一)配置环境 安装requests库 安装bs4库 安装lxml库 (二)代码展示 # IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/ # 仅仅爬取首页IP地址就足够一般使用 from bs4 import BeautifulSoup

  • python requests 测试代理ip是否生效

    代码如下所示: import requests '''代理IP地址(高匿)''' proxy = { 'http': 'http://117.85.105.170:808', 'https': 'https://117.85.105.170:808' } '''head 信息''' head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.

  • python爬取代理IP并进行有效的IP测试实现

    爬取代理IP及测试是否可用 很多人在爬虫时为了防止被封IP,所以就会去各大网站上查找免费的代理IP,由于不是每个IP地址都是有效的,如果要进去一个一个比对的话效率太低了,我也遇到了这种情况,所以就直接尝试了一下去网站爬取免费的代理IP,并且逐一的测试,最后将有效的IP进行返回. 在这里我选择的是89免费代理IP网站进行爬取,并且每一个IP都进行比对测试,最后会将可用的IP进行另存放为一个列表 https://www.89ip.cn/ 一.准备工作 导入包并且设置头标签 import reques

  • python爬取代理ip的示例

    要写爬虫爬取大量的数据,就会面临ip被封的问题,虽然可以通过设置延时的方法来延缓对网站的访问,但是一旦访问次数过多仍然会面临ip被封的风险,这时我们就需要用到动态的ip地址来隐藏真实的ip信息,如果做爬虫项目,建议选取一些平台提供的动态ip服务,引用api即可.目前国内有很多提供动态ip的平台,普遍价格不菲,而对于只想跑个小项目用来学习的话可以参考下本篇文章. 简述 本篇使用简单的爬虫程序来爬取免费ip网站的ip信息并生成json文档,存储可用的ip地址,写其它爬取项目的时候可以从生成的json

  • Python 快速验证代理IP是否有效的方法实现

    有时候,我们需要用到代理IP,比如在爬虫的时候,但是得到了IP之后,可能不知道怎么验证这些IP是不是有效的,这时候我们可以使用Python携带该IP来模拟访问某一个网站,如果多次未成功访问,则说明这个代理是无效的. 代码如下: import requests import random import time http_ip = [ '118.163.13.200:8080', '222.223.182.66:8000', '51.158.186.242:8811', '171.37.79.12

  • selenium+python设置爬虫代理IP的方法

    1. 背景 在使用selenium浏览器渲染技术,爬取网站信息时,一般来说,速度是很慢的.而且一般需要用到这种技术爬取的网站,反爬技术都比较厉害,对IP的访问频率应该有相当的限制.所以,如果想提升selenium抓取数据的速度,可以从两个方面出发: 第一,提高抓取频率,出现验证信息时进行破解,一般是验证码或者用户登录. 第二,使用多线程 + 代理IP, 这种方式,需要电脑有足够的内存和充足稳定的代理IP . 2. 为chrome设置代理IP from selenium import webdri

随机推荐