導航:首頁 > 編程語言 > python3使用代理ip

python3使用代理ip

發布時間:2023-06-13 00:08:37

『壹』 python下 selenium與chrome結合進行網頁爬取,怎麼設置代理IP

#coding:utf-8
import sys,re,random,time,os
import socket
from socket import error as socket_error
import threading
import urllib2,cookielib
from bs4 import BeautifulSoup

from selenium import webdriver
from selenium.webdriver.common.proxy import *
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

proxyFilePath = time.strftime("%Y%m%d")

def testSocket(ip, port):
'''
socket連接測試,用來檢測proxy ip,port 是否可以正常連接
'''
print '正在測試socket連接...'
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.settimeout(10)
sock.connect((ip, int(port)))
#sock.send('meta')
sock.close()
print ip+':'+port+'--status:ok'
return 1
except socket_error as serr: # connection error
sock.close()
print ip+':'+port+'--status:error--Connection refused.'
return 0

def getDriver(httpProxy = '', type='Firefox'):
if type == 'Firefox':
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': httpProxy,
'ftpProxy': httpProxy,
'sslProxy': httpProxy,
'noProxy': '' # set this value as desired
})
firefox_profile = FirefoxProfile()
#firefox_profile.add_extension("firefox_extensions/adblock_plus-2.5.1-sm+tb+an+fx.xpi")
firefox_profile.add_extension("firefox_extensions/webdriver_element_locator-1.rev312-fx.xpi")
firefox_profile.set_preference("browser.download.folderList",2)
firefox_profile.set_preference("webdriver.load.strategy", "unstable")
#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary('/usr/bin/firefox'))
#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary("/cygdrive/c/Program\ Files\ (x86)/Mozilla\ Firefox/firefox.exe"))
driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy)
elif type == 'PhantomJS': # PhantomJS
service_args = [
'--proxy='+httpProxy,
'--proxy-type=http',
]
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Windows x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36'
driver = webdriver.PhantomJS(executable_path='windows/phantomjs.exe', service_args=service_args)
else: # Chrome
chrome_options = webdriver.ChromeOptions()
#chrome_options.add_extension('firefox_extensions/adblockplus_1_7_4.crx')
chrome_options.add_argument('--proxy-server=%s' % httpProxy)
driver = webdriver.Chrome(executable_path='windows/chromedriver.exe', chrome_options=chrome_options)
return driver

『貳』 如何使用Python實現爬蟲代理IP池

第一步:找IP資源

IP資源並不豐富,換句話說是供不應求的,因此一般是使用動態IP。

免費方法,直接在網路上找,在搜索引擎中一搜索特別多能夠提供IP資源的網站,進行採集即可。

付費方法,通過購買芝麻ip上的IP資源,並進行提取,搭建IP池。

『叄』 python隨便給了個代理IP居然也能正常訪問,這是為啥

不同的狀態碼代表著不同含義。
200並不代表正常訪問並獲取到返回值。只是表明正確處理了請求而已。
你隨便設置的代理ip有可能真的存在這是一方面,另一方面代理只是鏈接與轉發功能。200的狀態碼也並不能表示代理成功讓你訪問到了目標網址並獲取到了正確的返回信息。

常見的狀態碼有很多,404、400、500等等。
以下資料摘自(csdn博客:https://blog.csdn.net/xiaoxiaode_shu/article/details/80700801)
1開頭的http狀態碼
表示臨時響應並需要請求者繼續執行操作的狀態代碼。

100 (繼續) 請求者應當繼續提出請求。 伺服器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。
101 (切換協議) 請求者已要求伺服器切換協議,伺服器已確認並准備切換。

2開頭的http狀態碼
表示請求成功

200 成功處理了請求,一般情況下都是返回此狀態碼;
201 請求成功並且伺服器創建了新的資源。
202 接受請求但沒創建資源;
203 返回另一資源的請求;
204 伺服器成功處理了請求,但沒有返回任何內容;
205 伺服器成功處理了請求,但沒有返回任何內容;
206 處理部分請求;

3xx (重定向)
重定向代碼,也是常見的代碼

300 (多種選擇) 針對請求,伺服器可執行多種操作。 伺服器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302 (臨時移動) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,伺服器返回此代碼。
304 (未修改) 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。
305 (使用代理) 請求者只能使用代理訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用代理。
307 (臨時重定向) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

4開頭的http狀態碼表示請求出錯

400 伺服器不理解請求的語法。
401 請求要求身份驗證。 對於需要登錄的網頁,伺服器可能返回此響應。
403 伺服器拒絕請求。
404 伺服器找不到請求的網頁。
405 禁用請求中指定的方法。
406 無法使用請求的內容特性響應請求的網頁。
407 此狀態代碼與 401類似,但指定請求者應當授權使用代理。
408 伺服器等候請求時發生超時。
409 伺服器在完成請求時發生沖突。 伺服器必須在響應中包含有關沖突的信息。
410 如果請求的資源已永久刪除,伺服器就會返回此響應。
411 伺服器不接受不含有效內容長度標頭欄位的請求。
412 伺服器未滿足請求者在請求中設置的其中一個前提條件。
413 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。
414 請求的 URI(通常為網址)過長,伺服器無法處理。
415 請求的格式不受請求頁面的支持。
416 如果頁面無法提供請求的范圍,則伺服器會返回此狀態代碼。
417 伺服器未滿足」期望」請求標頭欄位的要求。

5開頭狀態碼並不常見,但是我們應該知道

500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。
501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此代碼。
502 (錯誤網關) 伺服器作為網關或代理,從上游伺服器收到無效響應。
503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。
504 (網關超時) 伺服器作為網關或代理,但是沒有及時從上游伺服器收到請求。
505 (HTTP 版本不受支持) 伺服器不支持請求中所用的 HTTP 協議版本。

『肆』 python 爬蟲 ip池怎麼做

無論是爬取IP,都能在本地設計動態代理IP池。這樣既方便使用,又可以提升工作效率。那麼怎麼在本地設計一個代理IP池呢?IPIDEA為大家簡述本地代理IP池的設計和日常維護。
代理IP獲取介面,如果是普通代理IP,使用ProxyGetter介面,從代理源網站抓取最新代理IP;如果是需耗費代理IP,一般都有提供獲取IP的API,會有一定的限制,比如每次提取多少個,提取間隔多少秒。

代理IP資料庫,用以存放在動態VPS上獲取到的代理IP,建議選擇SSDB。SSDB的性能很突出,與Redis基本相當了,Redis是內存型,容量問題是弱項,並且內存成本太高,SSDB針對這個弱點,使用硬碟存儲,使用Google高性能的存儲引擎LevelDB,適合大數據量處理並把性能優化到Redis級別。

代理IP檢驗計劃,代理IP具備時效性,過有效期就會失效,因此 需要去檢驗有效性。設置一個定時檢驗計劃,檢驗代理IP有效性,刪除無效IP、高延時IP,同時預警,當IP池裡的IP少於某個閾值時,根據代理IP獲取介面獲取新的IP。

代理IP池外部介面除代理撥號伺服器獲取的代理IP池,還需要設計一個外部介面,通過這個介面調用IP池裡的IP給爬蟲使用。代理IP池功能比較簡單,使用Flask就可以搞定。功能可以是給爬蟲提供get/delete/refresh等介面,方便爬蟲直接使用。

『伍』 代理IP對於Python爬蟲有多重要

額~我使用代理IP做爬蟲這么久,還沒遇到這個問題哎,是不是因為你使用的代理IP可用率不太高導致的啊,或者是你的代理IP實際上並不是高匿的啊,網站根據某些規律找到你的本機IP了。我一直用的是 618IP代理 HTTP,沒遇到什麼問題,覺得爬取速度很快,也很穩定。建議你用排除法去排除可能導致的原因,快點解決問題

『陸』 python下 selenium與chrome結合進行網頁爬取,怎麼設置代理IP

設置代理的話,可以使用這種方式,代碼是我剛才測試過的,親測可用from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://171.37.135.94:8123')
chrome = webdriver.Chrome(chrome_options=chrome_options)
chrome.get('http://httpbin.org/ip')
print(chrome.page_source)
chrome.quit()
不過話說回來,本來用selenium的話抓取速度就很慢了,加上代理的話(如果代理不穩定)可能還會慢出一大截。

『柒』 python爬蟲應該怎樣使用代理IP

先網站上在線提取代理IP,提取數量、代理協議、埠位數等都可以自定義

『捌』 python 如何編寫代理伺服器

frombottleimportrun,route,request,response
fromurllib.requestimporturlopen
@route('<url:re:.*>')
defget_method(url):
data=urlopen(url)
returndata.read()
run(host='0.0.0.0',port=3456,debug=True)

我簡單寫一個,使用bottle框架,注意不要該ie的代理,使用別的瀏覽器如firefox代理到

127.0.0.1:3456

『玖』 怎麼快速驗證代理IP是否可用 只能使用VBA或者python3.7

不知道協議、賬號和密碼的情況下,只能測試連接是否可用了。

fromconcurrent.,as_completed
importsocket

deftry_connection(ip_port):
s=socket.socket()
s.settimeout(5)
try:
s.connect(ip_port)
exceptsocket.timeoutase:
info=ip_port[0]+':'+str(ip_port[1])+'超時'
exceptsocket.errorase:
info=ip_port[0]+':'+str(ip_port[1])+''+str(e)
else:
info=ip_port[0]+':'+str(ip_port[1])+'可用'
finally:
s.close()
returninfo

executor=ThreadPoolExecutor(max_workers=10)
withopen('server.txt','r')asfin,open('connection.txt','w')asfout:
servers=[]
foraddrinfin:
ip,port=addr.split(':')
port=int(port)
servers.append((ip,port))
forresultinexecutor.map(try_connection,servers):
print(result)
fout.write(result+' ')
閱讀全文

與python3使用代理ip相關的資料

熱點內容
如何用電腦解壓縮文件 瀏覽:446
pubg用什麼伺服器 瀏覽:526
田漢pdf 瀏覽:661
記錄儀如何安裝安卓系統 瀏覽:594
python求灰度均值 瀏覽:756
c編譯器是系統軟體嗎 瀏覽:694
獲取伺服器內網地址 瀏覽:536
新手媽媽如何帶新生兒APP 瀏覽:157
java日程管理 瀏覽:376
高清視頻鏈接加密 瀏覽:407
新買的阿里雲伺服器怎麼配置 瀏覽:612
在線編譯器為什麼刷新還在 瀏覽:213
雲伺服器系統盤可以裝資料庫 瀏覽:906
php繪制圖形 瀏覽:588
支付伺服器異常怎麼辦 瀏覽:76
java撥號 瀏覽:868
er5200如何設置虛擬伺服器 瀏覽:573
網路中心伺服器叫什麼 瀏覽:459
isplay單片機下載器 瀏覽:482
怎麼查看伺服器地址和埠 瀏覽:187