免費(fèi)ip地址代理軟件(免費(fèi)代理ip)

哈嘍,大家好,我是強(qiáng)哥。

這幾天,鬼滅之刃游郭篇就要上線了,強(qiáng)哥的一個朋友非常喜歡鬼滅之刃,可以說是到了癡迷的地步。每次新篇上線都會第一時間觀看。雖然這次上線之前,這家伙就已經(jīng)看過了,不過這消息還是把他激動的不行,拉著我要我和他重溫一遍。

這不,昨天,還找我要了個爬蟲代碼,去網(wǎng)上搜刮各種鬼滅之刃相關(guān)的圖片。可是,在我給他代碼后不到一個小時,這家伙就又罵罵咧咧的跑過來找我算賬了,說用了我的代碼,剛開始爬得還挺好,很舒服??墒沁^了將近半小時,就發(fā)現(xiàn),有兩個他經(jīng)??磮D的網(wǎng)站爬不到圖片了。而且,不用軟件,自己用電腦瀏覽器也沒法訪問這倆網(wǎng)站了,這讓他非常惱火。

聽了他這么一說,我就大概明白了個十有八九,應(yīng)該是爬的有點(diǎn)兇IP被封了。用手機(jī)5G網(wǎng)絡(luò)看了下對應(yīng)的網(wǎng)站,確實(shí)還是可以正常訪問,那就沒錯了。

趕緊和這家伙說了一些爬蟲相關(guān)法律知識,爬蟲雖好可以解脫我們的雙手,可是爬的太兇容易被請喝茶。前幾年不是還有個公司的CTO和程序員被抓判刑了嗎。所以自己還是要控制好頻率,不要沒有節(jié)制……

大道理講了一通,可是,現(xiàn)在他還想繼續(xù)下怎么辦呢?沒辦法,只好找找代理了,這家伙又是化石白嫖黨,讓他出錢是沒辦法了,強(qiáng)哥只好自己祭出大招了。

IP代理池

沒錯,要解決這個辦法,最簡單好用的就是IP代理池了,也就是搞到一大堆的可正常使用的代理IP,然后我們用爬蟲的時候,請求不直接發(fā)送到目標(biāo)網(wǎng)站,而是借助代理IP,把請求先發(fā)到代理服務(wù)器,代理服務(wù)器再幫我們把請求發(fā)送到目標(biāo)網(wǎng)站。這樣,假如被目標(biāo)網(wǎng)站發(fā)現(xiàn)了,封的也是代理的IP不是我們自己的IP啦。

至于為什么要用到代理池,主要還是怕老用同一個代理IP被封了就又沒法訪問了,多搞幾個寧濫毋缺嘛。

ProxyPool

既然要白嫖,那必須找找開源項目。既然要找開源項目,那必須要夠?qū)I(yè)的才配的上強(qiáng)哥的代碼。所以,這次的主角是《Python3網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)》的作者崔慶才的開源項目:ProxyPool。

先簡單介紹下項目結(jié)構(gòu)吧:

代理池分為四個部分,獲取模塊、存儲模塊、檢測模塊、接口模塊。

  • 存儲模塊使用 Redis 的有序集合,用以代理的去重和狀態(tài)標(biāo)識,同時它也是中心模塊和基礎(chǔ)模塊,將其他模塊串聯(lián)起來。
  • 獲取模塊定時從代理網(wǎng)站獲取代理,將獲取的代理傳遞給存儲模塊,保存到數(shù)據(jù)庫。
  • 檢測模塊定時通過存儲模塊獲取所有代理,并對其進(jìn)行檢測,根據(jù)不同的檢測結(jié)果對代理設(shè)置不同的標(biāo)識。
  • 接口模塊通過 Web API 提供服務(wù)接口,其內(nèi)部還是連接存儲模塊,獲取可用的代理。

項目原理是在各大提供IP代理池的網(wǎng)站把IP搞過來然后程序測試能用之后,才會存下來供我們使用,相當(dāng)于幫助我們省去了找免費(fèi)IP代理的時間。

當(dāng)然,如果只是拿來用,也不用過多的在意這些細(xì)節(jié),我們直接沖。

上手

ProxyPool需要本地運(yùn)行起來,運(yùn)行起來后,會在本地暴露一個接口地址: http://localhost:5555/random 直接訪問即可獲取一個隨機(jī)可用代理IP。

強(qiáng)哥用Docker方式下載項目鏡像后,用docker-compose up命令把服務(wù)運(yùn)行起來了,然后瀏覽器訪問效果如下:

沒錯,返回的120.196.112.6:3128就是代理IP啦。

Docker鏡像下載方式:

docker pull germey/proxypool

也想搞一波的小伙伴,自己到GitHub上看看吧,用起來還是很簡單的: https://github.com/Python3WebSpider/ProxyPool

怎么幫朋友

既然工具有了,就把之前我給朋友的爬蟲代碼拿過來,把代理池懟上去就行了。當(dāng)然,這里就不直接暴露我的爬蟲代碼了,給一個官方示例代碼吧,和我寫的也差不多:

import requests

proxypool_url = 'http://127.0.0.1:5555/random'
target_url = 'http://httpbin.org/get'

def get_random_proxy():
    """
    get random proxy from proxypool
    :return: proxy
    """
    return requests.get(proxypool_url).text.strip()

def crawl(url, proxy):
    """
    use proxy to crawl page
    :param url: page url
    :param proxy: proxy, such as 8.8.8.8:8888
    :return: html
    """
    proxies = {'http': 'http://' + proxy}
    return requests.get(url, proxies=proxies).text


def main():
    """
    main method, entry point
    :return: none
    """
    proxy = get_random_proxy()
    print('get random proxy', proxy)
    html = crawl(target_url, proxy)
    print(html)

if __name__ == '__main__':
    main()

可以看到,用到代理的方式關(guān)鍵就是這句:requests.get(url, proxies=proxies),直接把獲取到的代理IP搞到proxies去就行了。

這里還要提到代碼中用到的另一個開源項目的地址,對,就是http://httpbin.org/get,我們可以根據(jù)這個地址返回的數(shù)據(jù)判斷我們發(fā)起訪問該地址的IP。

強(qiáng)哥直接用瀏覽器訪問的效果:

可以看到這里用了本地IP。

換用上面的代理代碼訪問的效果:

可以看到,返回的origin確實(shí)使用了代理IP。也就是說,我們的IP代理池使用成功了。

強(qiáng)哥朋友在拿到新的爬蟲代碼,并進(jìn)行了頻率的節(jié)制,終于不再怎么被封IP了。順帶送了我一張圖:

怎么說呢?沒咬竹子的禰豆子不是好豆子。

搞更深點(diǎn)

IP代理池這玩意除了用在爬蟲上還會被用在哪呢?

嗯……如果看了強(qiáng)哥上篇文章的小伙伴應(yīng)該能猜到,當(dāng)然是DoS攻擊了,其實(shí)爬蟲和DoS攻擊,在某些地方還是有交集的,爬蟲控制的不好很可能就成了DoS。這個就不做過多擴(kuò)展了。

強(qiáng)哥前天還看了個DoS攻擊的項目,用到了反射原理來進(jìn)行的攻擊,哈哈,之前都是看DoS攻擊方式介紹的時候有了解到,這回看到代碼還挺激動,有機(jī)會和大家也介紹下。

好了,這篇文章的內(nèi)容發(fā)貨聯(lián)盟就和大家分享到這里,如果大家網(wǎng)絡(luò)推廣引流創(chuàng)業(yè)感興趣,可以添加微信:80709525  備注:發(fā)貨聯(lián)盟引流學(xué)習(xí); 我拉你進(jìn)直播課程學(xué)習(xí)群,每周135晚上都是有實(shí)戰(zhàn)干貨的推廣引流技術(shù)課程免費(fèi)分享!


版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 sumchina520@foxmail.com 舉報,一經(jīng)查實(shí),本站將立刻刪除。

您可能還會喜歡:

發(fā)表評論

◎歡迎參與討論,請在這里發(fā)表您的看法、交流您的觀點(diǎn)。