您是否打算使用Selenium进行自动化测试或Web抓取?根据您特定的项目要求,您可能需要代理。现在就来发现我们的Selenium代理精选。
Selenium的重要性怎么强调都不过分。如果它没有被用于自动化测试,你会看到web scraper利用它们从javaScript特色的网站上抓取数据。在广泛使用Selenium的两个领域中,都需要代理。
在某些情况下,你可以不使用代理;在其他情况下,除非您准备使用其他昂贵的选项,否则代理是必须的。本文将讨论可以与Selenium库一起使用的代理,使其有效地发挥作用。
在讨论代理之前,我们将对Selenium进行概述,以及为什么需要为Selenium提供代理。您还将学习如何设置Selenium以使用代理。
什么是Selenium?
Selenium是浏览器自动化工具。使用此工具,浏览器可以自动执行诸如填写表格,访问网站以及执行浏览器可以执行的各种任务之类的任务。它主要用于自动化测试。
它也可用于Web抓取,因为它可用于查看网页并具有某些Web抓取功能。Selenium支持许多浏览器,包括Chrome,Internet Explorer和Firefox。较旧的Selenium版本支持无头浏览器,例如PhantomJS。
它的语言支持也是它在开发人员中的流行之一,因为它提供了对Python,Java,JavaScript,C#和Ruby的支持。
为什么需要Selenium代理?
代理不是必须的。但是,根据项目要求,您将需要使用代理。如前所述,Selenium用于自动测试和刮纸。对于自动化测试,实际上,除非正在测试本地化,否则实际上不需要代理。
例如,您正在为不同地区开发站点,并且您想测试某些地区出现的语言是否是该地区使用的语言。除了本地化之外,实际上没有理由要使用代理进行自动化测试。
在网页抓取方面,如果需要本地化的网页内容,则还需要代理。当您打算在短时间内向网站发送过多请求时,也需要使用它们。
哪里可以找到更好的Selenium代理
实际上,没有什么比Selenium的最佳代理更好,因为Selenium本身不需要代理。您打算使用Selenium的站点确定了您应该使用的代理。因此,我们将为您提供跨数据中心和住宅代理类别的代理建议。
Selenium的住宅代理
住宅代理是Selenium Web驱动程序的首选代理。这是因为,与数据中心代理不同,住宅代理不容易被检测到。这是因为它们通过住宅IP路由客户的请求,并且这些IP类型比数据中心IP获得更多的信任。住宅代理非常适合访问Instagram,Google和YouTube等复杂站点。下面讨论了一些硒的住宅代理提供商。
1. Bright Data
IP池规模:超过7200万
地点:世界所有国家
允许并发:无限
允许的带宽:从20GB开始
费用: 20GB,每月300美元起
Bright Data可以说是市场上最好的住宅代理提供商。它是世界上最大的代理网络,池中有超过7200万个住宅IP地址。有两个原因使Bright Data住宅代理非常适合Selenium。最重要的是Bright Data在每个国家和世界上大多数城市都有代理。这意味着您可以在使用代理时定位到特定位置,这对于使用Selenium测试内容本地化来说是完美的选择。Bright Data的代理服务器具有很高的可替换性,它将在每个Web请求后为您重新分配一个不同的ip地址,从而使其难以被阻止,因此非常适合于Web抓取。
2. Smartproxy
IP池大小:超过4000万
地点:全球195个地点
允许并发:无限
允许的带宽:从5GB开始
费用: 5GB每月75美元起
Smartproxy是另一种具有高级代理的住宅代理服务,非常适合使用智能反垃圾邮件系统访问网站以及使用Selenium进行内容本地化测试。就像Bright Data一样,Smartproxy在全球大约195个国家/地区以及全球8个主要城市的代理中拥有良好的地理位置覆盖。他们也有高旋转代理。Smartproxy是希望使用高级代理但预算较小的代理提供商之一。只需75美元,您就可以从其中购买5GB内存。
3. Stormproxies
IP池大小: 20万
地点:仅美国和欧盟地区
允许并发:每个端口仅一台设备
费用: 10个端口每月50美元起
Bright Data和Smartproxy有一个共同的问题,它们的代理都具有可耗尽的带宽。就是说,他们的代理是经过计量的,并且在消耗分配给您的带宽之后,您将无法再次使用他们的代理,除非您支付额外的带宽。Stormproxies住宅代理具有无限的带宽-允许您无限使用带宽。但是,出于性能考虑,可以创建的线程数是有限的。Stormproxies住宅代理非常适合于网络抓取,可以与Selenium一起使用以访问大量站点。
4. Soax
IP池大小: 850万
地点:仅美国和欧盟地区
允许并发:每个端口仅一台设备
费用: 5GB每月75美元起
Soax是目前发展最迅速的代理商之一,它拥有良好的地理位置覆盖,可以定位到国家,城市,区域或ISP,能满足你对代理的所有需求。最初它们的定价并不是那么合理,但它们已作出了最快的调整,现在定价模式Smartproxy相似,因此也获得了众多的追随者。Soax代理池的大小不是最出众的,只有850万,但却号称是最干净的,它能自动过滤被标记或滥用过的IP。同时它们的代理网络是安全和加密的。性能稳定可靠,并为您提供绝对的匿名性。
Selenium的数据中心代理
数据中心代理是您在市场上可获得的最便宜的代理。它们利用数据中心拥有的IP地址。由于它们的IP地址是由数据中心分配的,因此很容易检测和禁止它们。事实证明,其中一些逃避了侦查和禁令。其中一些已在上面讨论。
1. Myprivateproxy
地点:仅美国和欧盟地区
允许并发:最多100个线程
允许的带宽:无限
费用:每个代理人一个月$ 1.49
MyPrivateProxy可以说是市场上最好的数据中心代理提供商。它的代理服务器是最快的-它们也安全可靠。借助MyPrivateProxy数据中心代理,您可以将Selenium用于Web抓取非本地化的Web内容。这是因为MyPrivateProxy仅具有一些位置支持,因此,它不是用于自动化本地化测试的良好代理提供程序,但是它对于Web抓取非常有效。MyPrivateProxy的某些数据中心由绿色能源供电。他们的代理人很便宜。
2. Highproxies
地点: 10个国家
允许并发:无限
允许的带宽:无限
费用:每个代理人一个月$ 1.40
高代理数据中心代理对于Web抓取和自动化本地化测试都是不错的选择。这是因为与MyPrivateProxy不同,Highproxies在许多国家/地区都有代理,包括美国,加拿大,意大利,以色列,西班牙,德国,法国,荷兰,日本和澳大利亚。高代理在速度,可靠性和安全性方面表现良好。高代理数据中心代理不容易被网站阻止,因为它们不容易被检测到。像MyPrivateProxy一样,高代理可以毫无问题地用于某些复杂的网站,例如Facebook和Twitter。但是,它们比列表中的其他数据中心代理更昂贵。
3. InstantProxies
地点:全球
允许并发:无限
允许的带宽:无限
费用:每个代理人一个月$ 1.00
上面我说过MyPrivateProxy数据中心代理很便宜。InstantProxies实际上更便宜。实际上,只有10美元,您就可以使用10个代理。InstantProxies支持很多位置,但不能让您自己选择位置。在为您出售代理之前,InstantProxies会对代理进行测试,以确保它们正常工作,以避免浪费您的时间。就像MyPrivateProxy一样,它们的代理服务器仅适用于Web抓取而不是Selenium自动化测试。
如何在Selenium上设置代理
开发人员遇到的问题之一是如何在Selenium上设置代理。由于支持的浏览器和编程语言多种多样,因此如何设置代理等问题的答案也各不相同。
Chrome浏览器的Selenium代理设置
在本文的此部分中,我们将研究如何设置Selenium以便与使用Python驱动流行的Chrome浏览器的代理一起使用。
以下代码显示了如何在Selenium上设置代理。该代码适用于Chrome。
from selenium import webdriver PROXY = "21.65.32.65:3124" chrome_options = WebDriverWait.ChromeOptions() chrome_options.add_argument('--proxy-server=%s' % PROXY) chrome = webdriver.Chrome(chrome_options=chrome_options) chrome.get("https://whatismyipaddress.com")
查看代码的最后一行,您可以看到该代码打开了WhatIsMyIpAdress网站,因此您可以看到Chrome正在使用您的首选代理。
添加选项
from selenium import webdriver from selenium.webdriver.chrome.options import Options ops = Options() # ops.add_argument('--headless') # ops.add_argument('--no-sandbox') # ops.add_argument('--disable-dev-shm-usage') # ops.add_argument('--disable-gpu') print('--proxy-server=http://%s' % proxy) ops.add_argument('--user-agent=%s' % ua) ops.add_argument('--proxy-server=http://%s' % proxy) driver = webdriver.Chrome(executable_path=r"/root/chromedriver", chrome_options=ops) driver.delete_all_cookies() driver.maximize_window() driver.get("https://whatismyipaddress.com") print(driver.page_source) driver.quit()
对于代理,主要注意这里:
opt .add_argument(“–proxy-server=http://ip:port”)
browser = webdriver.Chrome(chrome_options = opt )
Firefox 的 Selenium 代理设置
另外,您可以添加选项:
from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, ProxyType proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy': my_proxy, 'noProxy': '' }) driver = webdriver.Firefox(proxy = proxy, executable_path=r"/root/geckodriver") driver.delete_all_cookies() driver.maximize_window() driver.get("https://whatismyipaddress.com") print(driver.page_source) driver.quit()
Selenium 私有代理设置
需要使用用户名和密码进行身份验证:
from selenium import webdriver def create_proxyauth_extension(proxy_host, proxy_port, proxy_username, proxy_password, scheme='http', plugin_path=None): """Proxy Auth Extension args: proxy_host (str): domain or ip address, ie proxy.domain.com proxy_port (int): port proxy_username (str): auth username proxy_password (str): auth password kwargs: scheme (str): proxy scheme, default http plugin_path (str): absolute path of the extension return str -> plugin_path """ import string import zipfile if plugin_path is None: plugin_path = 'd:/webdriver/vimm_chrome_proxyauth_plugin.zip' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0" } """ background_js = string.Template( """ var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "${scheme}", host: "${host}", port: parseInt(${port}) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); function callbackFn(details) { return { authCredentials: { username: "${username}", password: "${password}" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: [""]}, ['blocking'] ); """ ).substitute( host=proxy_host, port=proxy_port, username=proxy_username, password=proxy_password, scheme=scheme, ) with zipfile.ZipFile(plugin_path, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) return plugin_path proxyauth_plugin_path = create_proxyauth_extension( proxy_host="proxy.crawlera.com", proxy_port=8010, proxy_username="77409f72fe0c4a3e8413654411de0380", proxy_password="" ) co = webdriver.ChromeOptions() co.add_argument("--start-maximized") co.add_extension(proxyauth_plugin_path) driver = webdriver.Chrome(chrome_options=co) driver.get("http://httpbin.org/get")
结 论
Selenium是可用于自动测试和Web抓取JavaScript特色网站的工具之一。根据您需要Selenium的用途,您可能需要使用代理。上面讨论的代理是您可以使用的一些最佳选择。
发表评论
发表评论: