免費ip地址代理軟件(免費代理ip)

哈嘍,大家好,我是強哥。

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

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

聽了他這么一說,我就大概明白了個十有八九,應該是爬的有點兇IP被封了。用手機5G網絡看了下對應的網站,確實還是可以正常訪問,那就沒錯了。

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

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

IP代理池

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

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

ProxyPool

既然要白嫖,那必須找找開源項目。既然要找開源項目,那必須要夠專業的才配的上強哥的代碼。所以,這次的主角是《Python3網絡爬蟲開發實戰》的作者崔慶才的開源項目:ProxyPool。

先簡單介紹下項目結構吧:

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

  • 存儲模塊使用 Redis 的有序集合,用以代理的去重和狀態標識,同時它也是中心模塊和基礎模塊,將其他模塊串聯起來。
  • 獲取模塊定時從代理網站獲取代理,將獲取的代理傳遞給存儲模塊,保存到數據庫。
  • 檢測模塊定時通過存儲模塊獲取所有代理,并對其進行檢測,根據不同的檢測結果對代理設置不同的標識。
  • 接口模塊通過 Web API 提供服務接口,其內部還是連接存儲模塊,獲取可用的代理。

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

當然,如果只是拿來用,也不用過多的在意這些細節,我們直接沖。

上手

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

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

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

Docker鏡像下載方式:

docker pull germey/proxypool

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

怎么幫朋友

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

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()

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

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

強哥直接用瀏覽器訪問的效果:

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

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

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

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

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

搞更深點

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

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

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

好了,這篇文章的內容發貨聯盟就和大家分享到這里,如果大家網絡推廣引流創業感興趣,可以添加微信:80709525  備注:發貨聯盟引流學習; 我拉你進直播課程學習群,每周135晚上都是有實戰干貨的推廣引流技術課程免費分享!


版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 sumchina520@foxmail.com 舉報,一經查實,本站將立刻刪除。

您可能還會喜歡:

發表評論

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。
菠萝菠萝蜜视频在线观看3,国产一级无码AV片在线观看,国在线产视频青青娱乐,伊人精品久久久久中文字幕,神马免费手机影院,亚洲最大免费视频5510