Python實現檢測代理IP是否可以翻牆

來源:互聯網
上載者:User
那堵牆著實可恨!身處IT這個圈子,經常需要用gg查資料(你也可以用來訪問1024,^_^...)。當然,你也可以用百度。其實也不是我不愛用百度,是有緣由的,且聽我細細道來。有一次閑得蛋疼,想看看會不會有人抄襲我的部落格(儘管部落格學得不咋地),於是百度了一下,結果是驚人的。我發現我自己寫的部落格,即使是拿整個標題去搜尋,往往搜不到,搜到的是一堆爬蟲爬去的結果。具體是哪些,這裡就不說了,各自可以拿自己的部落格試一下。以前總是手工收集幾個IP用一段時間,失效了以後再重新收集幾個,如此反覆,煩!於是,想著寫個爬蟲抓取代理IP,然後每次直接資料庫裡面找幾個出來用就行了。然而,爬蟲爬過來的IP有很多已經失效了。這時又淪落為手工測試,這不是為自己增添更多的煩惱嗎?於是寫個檢測代理IP是否可用的程式,讓程式幫我檢測好了。這樣每次我就可以拿到可用的代理IP了。由於爬蟲是用scrapy寫的,為了方便維護,IP檢測就作為scrapy爬蟲裡面的一部分好了。於是有了下面這段檢測的程式:

1、建立檔案:checkproxy.py

#coding=utf-8 import urllib2import urllibimport timeimport socketip_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 proxydef 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_detecteddef 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去,走起。。。

  那道牆著實可恨!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.