python更換ip
❶ python 爬蟲ip被封鎖怎麼辦
從程序本身是無法解決的。
有兩個辦法:
(1)自己裝幾個虛擬機,分別不同IP在上面跑爬蟲的時候頻率別太高了,加個過程里加個 time.sleep(1)或(2),通常情況只要頻率不是太高是無法區別是正常閱讀還是爬東西的。
(2)找proxy用代理,respose發現異常就換IP
❷ python介面怎麼設置IP地址
使方法一、用IP138資料庫查詢域名或IP地址對應的地理位置。
?#-*- coding:gbk -*-import urllib2import re try: while True: ipaddr = raw_input("Enter IP Or Domain Name:") if ipaddr == "" or ipaddr == 'exit': break else: url = "http://www.ip138.com/ips138.asp?ip=%s&action=2" % ipaddr u = urllib2.urlopen(url) s = u.read() #Get IP Address ip = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',s) print "\n****** Below Result From IP138 Database *****" print "IP Address:",ip[0] #Get IP Address Location result = re.findall(r'(<li>.*?</li>)',s) for i in result: print i[4:-5] print "*"*45 print "\n" except: print "Not Data Find"
方法二、本來想調用阿里的ip介面查詢ip歸屬地。結果發現阿里的介面非常不給力,主要是不準確,不過是免費的且有地區和ISP的信息。以下是實現代碼
❸ 如何處理python爬蟲ip被封
當python爬蟲IP被封可用以下這幾種方法:
1、放慢爬取速度,減少對於目標網站帶來的壓力,但會減少單位時間類的爬取量。
2、偽造cookies,若從瀏覽器中能夠 正常訪問一個頁面,則可以將瀏覽器中的cookies復制過來使用
3、偽造User-Agent,在請求頭中把User-Agent設置成瀏覽器中的User-Agent,來偽造瀏覽器訪問。
4、使用代理IP,使用代理IP之後能夠 讓網路爬蟲偽裝自己的真實IP。
對於python網路爬蟲來說,有時候業務量繁重,分布式爬蟲是最佳的增強效率方式,而分布式爬蟲又急切需要數目眾多的IP資源,這一點免費IP是滿足不了的,並且免費代理一般不提供高匿名的代理IP,因此不建議大家使用免費的代理IP。為了節約前期成本費而使用免費ip代理,最終只會因為免費ip的劣質而導致苦不堪言,反倒得不償失。使用代理商代理IP可以有效的保障網路的安全,在IP被封的情況下可以有充足的IP可以進行更換,保證工作的正常進行。
❹ python 查找並修改txt中的ip
如果ip不是固定的話,用正則來匹配
❺ 用python斷網撥號換IP
#本人也是新手,以下代碼是windows環境調用cmd命令,沒什麼技術含量。
#環境 :xp,python2.7,notepad++
#coding:utf-8#設置顯示中文
import os
import time
while True :
os.system(r"rasphone -h xxx0") #xxx0是你的撥號名稱,xp下默認是「寬頻連接」。
os.system(r"rasdial xxx0 xxx1 xxx2") #xxx0同上,xxx1 撥號用戶名 ,xxx2撥號密碼。
time.sleep(3)
❻ 如何處理python爬蟲ip被封
1、放慢爬取速度,減小對於目標網站造成的壓力。但是這樣會減少單位時間類的爬取量。
第二種方法是通過設置IP等手段,突破反爬蟲機制繼續高頻率爬取。網站的反爬機制會檢查來訪的IP地址,為了防止IP被封,這時就可以使用HTTP,來切換不同的IP爬取內容。使用代理IP簡單的來講就是讓代理伺服器去幫我們得到網頁內容,然後再轉發回我們的電腦。要選擇高匿的ip,IPIDEA提供高匿穩定的IP同時更注重用戶隱私的保護,保障用戶的信息安全。
2、這樣目標網站既不知道我們使用代理,更不會知道我們真實的IP地址。
3、建立IP池,池子盡可能的大,且不同IP均勻輪換。
如果你需要大量爬去數據,建議你使用HTTP代理IP,在IP被封掉之前或者封掉之後迅速換掉該IP,這里有個使用的技巧是循環使用,在一個IP沒有被封之前,就換掉,過一會再換回來。這樣就可以使用相對較少的IP進行大量訪問。以上就是關於爬蟲IP地址受限問題的相關介紹。
❼ python 如何更改本地IP地址
import
os,sysos.system('netsh
int
ip
set
address
name="VMware
Network
Adapter
VMnet1"
source=static
addr=172.168.1.123
mask=255.255.255.0')name里填網卡名,addr為IP,MASK為子網掩碼。坐看樓下大蝦高招!
❽ 如何處理python爬蟲ip被封
如果爬蟲沒有大量IP來做,肯定是無法進行下去的,一般爬蟲代理ip方式大概有以下幾類。
重啟路由器或光貓,每一次路由器重啟,如果IP是公網的就會發生改變,如果是靜態IP,就需要重啟光貓才會變動公網IP。但這個方法耗時久,步驟麻煩,效率低,不適合公司的需求。
ADSL撥號也就是我們常說的撥號VPS,撥一次號可以換一次IP,相對來說比較穩定,自己控制撥號時間,爬取一次貨幾次撥號一次的話,這樣效率比較低。
自建代理IP,一批撥號VPS伺服器,利用squid+stunnel搭建一台HTTP高匿代理伺服器,proxy也可以搭建。自建代理比較穩定,只有自己使用,效果也比較好。不過這個需要一定技術要求,不適合新手小白。
在瀏覽器設置動態IP。根據瀏覽器設置動態IP代理,通過變動電腦瀏覽器更改IP,用於瀏覽其他的網頁。但是對於需要經常更換IP需求者,還是沒有這么方便的。
使用http這種方法便捷而且IP資源的質量也比較好,比如IPIDEA覆蓋全球240+地區ip,並穩定,能夠滿足大量的需求,安全性也可以得到保障。
❾ 求知:python+selenium使用自己伺服器多個IP的切換
可以考慮修改路由表的方法,Windows和Linux的route命令略有不同。
Win7系統
route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2
Linux系統
ip route change to 192.168.0.0/24 dev eth0 src 192.168.0.22
❿ python可以通過什麼命令更改ip地址
#!/usr/bin/env python
#-*- encoding:gb2312 -*-
Filename: IP.py
import sitecustomize
import _winreg
import ConfigParser
from ctypes import *
print '正在進行網路適配器檢測,請稍候…'
print
netCfgInstanceID = None
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
r'System\CurrentControlSet\Control\Class{4d36e972-e325-11ce-bfc1-08002be10318}')
keyInfo = _winreg.QueryInfoKey(hkey)
尋找網卡對應的適配器名稱 netCfgInstanceID
for index in range(keyInfo[0]):
hSubKeyName = _winreg.EnumKey(hkey, index)
hSubKey = _winreg.OpenKey(hkey, hSubKeyName)
try:
hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces')
lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange')
檢查是否是乙太網
if lowerRange[0] == 'ethernet':
driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0]
print '檢測到網路適配器名:', driverDesc
netCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0]
print '檢測到網路適配器ID:', netCfgInstanceID
if netCfgInstanceID == None:
print '沒有找到網路適配器,程序退出'
exit()
break
_winreg.CloseKey(hNdiInfKey)
except WindowsError:
print r'Message: No Ndi\Interfaces Key'
循環結束,目前只提供修改一個網卡IP的功能
_winreg.CloseKey(hSubKey)
_winreg.CloseKey(hkey)
通過修改注冊表設置IP
strKeyName = 'System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + netCfgInstanceID
print '網路適配器的注冊表地址是:\n', strKeyName
hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \
strKeyName, \
0, \
_winreg.KEY_WRITE)
config = ConfigParser.ConfigParser()
print
print '正在打開IP.ini配置文件…'
config.readfp(open('IP.ini'))
IPAddress = config.get("school","IPAddress")
SubnetMask = config.get("school","SubnetMask")
GateWay = config.get("school","GateWay")
DNSServer1 = config.get("school","DNSServer1")
DNSServer2 = config.get("school","DNSServer2")
DNSServer = [DNSServer1,DNSServer2]
print '配置文件內設定的信息如下,請核對:'
print
print 'IP地址:', IPAddress
print '子關掩碼:', SubnetMask
print '默認網關:', GateWay
print '主DNS伺服器:', DNSServer1
print '次DNS伺服器:', DNSServer2
print
res = raw_input('現在,請您決定:輸入1,則將配置文件寫入系統;輸入2,則將現有的系統設定還原為全部自動獲取;否則程序退出:')
if str(res) == '1':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress])
_winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask])
_winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay])
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer))
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切換成功!重置網路後即可生效'
elif str(res) == '2':
try:
_winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001)
_winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None)
_winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000)
_winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000)
except WindowsError:
print 'Set IP Error'
exit()
_winreg.CloseKey(hkey)
print '切換成功!重置網路後即可生效'
else:
print '用戶手動取消,程序退出'
exit('')