使用海外HTTP代理爬蟲時,我們該如何快速切換IP?

重見光明的貓發表於2022-09-07

對於網路爬蟲工作者而言,換ip是他們工作裡的一部分,例如網站瀏覽太頻繁、論壇發帖、網路爬蟲、網路營銷等都需要不斷的更換ip才能順利的完成。

網際網路的飛速發展,不僅僅工作業務上需要用到換ip,生活中也息息相關,例如玩遊戲,透過換ip防止被封號或者被限制等問題,使用網際網路的時候不斷換ip可以很好地保護個人隱私安全,防止駭客追蹤與攻擊。

為了解決這方面問題,各種換IP軟體隨之出現,網上有各種方法和軟體,有收費的也有免費的,但是操作起來卻都不是那麼簡單,這裡就不一一列舉了,在這裡為大家介紹更換IP地址常見的4種方法。

使用海外HTTP代理爬蟲時,我們該如何快速切換IP?

一、ADSL撥號換IP

ADSL撥號就是寬頻撥號,也就是斷開重連路由,每次連線ip都會自動更換,這種方法操作比較繁瑣,只能偶爾使用。

、VPS撥號

在網路環境不好的情況,可以透過VPS撥號的方法進行更換ip, VPS撥號與ADSL撥號操作相同,斷開重連,相比之下比較穩定點。

、虛擬專用網路更換IP

簡單來說就是虛擬專用網路,切換其他位置的IP地址。

四:程式碼程式更換

話不多說直接上程式碼

1.配置環境,匯入包

# IP地址取自國內髙匿海外代理IP網站: smartproxycn.com/

使用海外HTTP代理爬蟲時,我們該如何快速切換IP?

# 僅僅爬取首頁IP地址就足夠一般使用

from bs4 import BeautifulSoup

import requests

import random

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

2.獲取網頁內容函式

def getHTMLText(url,proxies):

try:

r = requests.get(url,proxies=proxies)

r.raise_for_status()

r.encoding = r.apparent_encoding

except:

return 0

else:

return r.text

3.從代理ip網站獲取代理ip列表函式,並檢測可用性,返回ip列表

def get_ip_list(url):

web_data = requests.get(url,headers)

soup = BeautifulSoup(web_data.text, 'html')

ips = soup.find_all('tr')

ip_list = []

for i in range(1, len(ips)):

ip_info = ips[i]

tds = ip_info.find_all('td')

ip_list.append(tds[1].text + ':' + tds[2].text)

#檢測ip可用性,移除不可用ip:(這裡其實總會出問題,你移除的ip可能只是暫時不能用,剩下的ip使用一次後可能之後也未必能用)

for ip in ip_list:

try:

proxy_host = " + ip

proxy_temp = {"https": proxy_host}

res = urllib.urlopen(url, proxies=proxy_temp).read()

except Exception as e:

ip_list.remove(ip)

continue

return ip_list

4.從ip池中隨機獲取ip列表

def get_random_ip(ip_list):

proxy_list = []

for ip in ip_list:

proxy_list.append(' + ip)

proxy_ip = random.choice(proxy_list)

proxies = {'http': proxy_ip}

return proxies

5.呼叫代理

if __name__ == '__main__':

url = ' smartproxycn.com/ '

ip_list = get_ip_list(url)

proxies = get_random_ip(ip_list)

print(proxies)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021123/viewspace-2913859/,如需轉載,請註明出處,否則將追究法律責任。

相關文章