代理驗(yàn)證器

一戴涝、驗(yàn)證器從西刺爬取第一頁,約100個(gè)代理吠昭,按照HTTP和HTTPS歸類存儲在屬性里喊括,多線程驗(yàn)證,將結(jié)果存儲在驗(yàn)證完畢的數(shù)據(jù)集中矢棚。
二、base.ini 是驗(yàn)證網(wǎng)站集府喳,可以試試*網(wǎng)站蒲肋,國內(nèi)的一般是十幾個(gè)驗(yàn)證成功,國外網(wǎng)站成功率基本為0钝满。
三兜粘、 完成版代碼
# test_proxy.py

import requests
from lxml.etree import HTML
import re
import os
import pandas as pd
from fake_useragent import UserAgent
from threading import Thread
from configparser import ConfigParser
import logging
from datetime import date
from urllib.parse import urlparse
from pprint import pprint

log = logging.getLogger(__name__)
log.level = logging.ERROR

class Verifier():
    def __init__(self):
        self.ua = UserAgent()
        self.headers = {"user-agent":self.ua.ie}
        self.conf = ConfigParser()
        self.conf.read("base.ini")
        self.test_url_http  = self.conf["test_urls"]["test_url_http"]
        self.test_url_https = self.conf["test_urls"]["test_url_https"]
        self.df = self.gen_dataframe()
        # print(self.df)
        self.df ["proxy"] = self.df[4].str.lower() +"," + self.df[0]+":"+ self.df[1]
        self.proxies = [{key:value} for key,value in [i.split(",") for i in self.df ["proxy"].tolist()]]
        self.proxies_http  = [d for d in self.proxies if list(d.keys())[0] == "http" ]
        self.proxies_https = [d for d in self.proxies if list(d.keys())[0] == "https"]
        self.verified_proxies_http  = set()
        self.verified_proxies_https = set()
        # self.item = {}

    def gen_dataframe(self):
        datasets = pd.DataFrame()
        r = requests.get("https://www.xicidaili.com/",headers=self.headers)
        html = HTML(r.content)
        trs = html.xpath("http://tr")
        for tr in trs:
            data = [i.strip() for i in tr.xpath("./td/text()") if i.strip() is not ""]
            if data:
                datasets = datasets.append(pd.Series(data),ignore_index=True)
        return datasets


    def _verify(self,test_url,proxy={}):
        try:
            if urlparse(test_url).scheme == "http" and list(proxy.keys())[0] == "http":
                log.debug("test...%s"%proxy)
                self.r = requests.get(test_url,proxies=proxy,headers=self.headers,timeout=20)
                self.verified_proxies_http.add(proxy["http"])
                log.debug("%s success!"%proxy)
            elif urlparse(test_url).scheme == "https" and list(proxy.keys())[0] == "https":
                log.debug("test...%s"%proxy)
                self.r = requests.get(test_url,proxies=proxy,headers=self.headers,timeout=20,verify=False)
                self.verified_proxies_https.add(proxy["https"])
                log.debug("%s success弯蚜!"%proxy)
            else:
                ...
        except Exception as e:
            log.debug(e)
    
    def verify_all(self):
        threads = [Thread(target=self._verify,args=(self.test_url_http,proxy)) for proxy in self.proxies_http]
        print("*正在測試HTTP")
        for thread in threads:
            thread.start()
        for thread in threads:
            thread.join()
        print("*測試完畢\n測試網(wǎng)站:%s"%self.test_url_http)

        threads = [Thread(target=self._verify,args=(self.test_url_https,proxy)) for proxy in self.proxies_https]
        print("*正在測試HTTPS")
        for thread in threads:
            thread.start()
        for thread in threads:
            thread.join()
        print("*測試完畢\n測試網(wǎng)站:%s"%self.test_url_https)
        print("本次測試HTTP代理{}個(gè)孔轴,有效 {} 個(gè),HTTPS代理{}個(gè)碎捺,有效 {} 個(gè)".format(len(self.proxies_http),len(self.verified_proxies_http),len(self.proxies_https),len(self.verified_proxies_https)))

if __name__=="__main__":
    verifier = Verifier()
    verifier.verify_all()
    print(verifier.verified_proxies_http)
    pprint(verifier.verified_proxies_https)
# base.ini

[test_urls]
test_url_basic = http://www.ip138.com/
url_proxies_source = https://www.xicidaili.com/nn/
test_url_http = http://www.ip138.com/
; test_url_https = https://www.tumblr.com/
test_url_https = https://www.google.com/
; test_url_https = http://www.google.co.uk/
; test_url_https = https://www.baidu.com/
四路鹰、驗(yàn)證結(jié)果
*正在測試HTTP
*測試完畢
測試網(wǎng)站:http://www.ip138.com/
*正在測試HTTPS
*測試完畢
測試網(wǎng)站:https://www.baidu.com/
本次測試HTTP代理39個(gè),有效 2 個(gè)收厨,HTTPS代理39個(gè)晋柱,有效 4 個(gè)
{'163.125.252.118:9797', '182.92.113.183:8118'}
{'111.177.177.158:9999',
 '119.102.188.233:9999',
 '163.125.70.21:8888',
 '60.186.73.201:9999'}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诵叁,隨后出現(xiàn)的幾起案子雁竞,更是在濱河造成了極大的恐慌,老刑警劉巖拧额,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碑诉,死亡現(xiàn)場離奇詭異彪腔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)进栽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門漫仆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泪幌,你說我怎么就攤上這事盲厌。” “怎么了祸泪?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵吗浩,是天一觀的道長。 經(jīng)常有香客問我没隘,道長懂扼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任右蒲,我火速辦了婚禮阀湿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瑰妄。我一直安慰自己陷嘴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布间坐。 她就那樣靜靜地躺著灾挨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竹宋。 梳的紋絲不亂的頭發(fā)上劳澄,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音蜈七,去河邊找鬼秒拔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛飒硅,可吹牛的內(nèi)容都是我干的砂缩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼狡相,長吁一口氣:“原來是場噩夢啊……” “哼梯轻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尽棕,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤喳挑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伊诵,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡单绑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曹宴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搂橙。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笛坦,靈堂內(nèi)的尸體忽然破棺而出区转,到底是詐尸還是另有隱情,我是刑警寧澤版扩,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布废离,位于F島的核電站,受9級特大地震影響礁芦,放射性物質(zhì)發(fā)生泄漏蜻韭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一柿扣、第九天 我趴在偏房一處隱蔽的房頂上張望肖方。 院中可真熱鬧,春花似錦未状、人聲如沸俯画。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽活翩。三九已至,卻和暖如春翻伺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沮焕。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工吨岭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人峦树。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓辣辫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魁巩。 傳聞我的和親對象是個(gè)殘疾皇子急灭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容