如何使用 Capybara 代理

如何使用 Capybara 代理

Capybara 是我最喜欢的模拟用户在网站上操作的库之一。它非常适合自动化测试,而手工测试会很累。但有时,我们需要额外的帮助来全面测试网站。例如,您可能想看看网站在另一个国家的外观、管理速率限制或隐藏您的 IP 以保护隐私。这时,使用代理就能帮上忙。

使用 Capybara 设置代理并不复杂。它可以让你的测试更加灵活。在这里,我将教你如何使用 Capybara 设置和使用代理的简单步骤。这将帮助你的测试更上一层楼。

了解如何用 Capybara 库连接代理。简单

为什么在 Capybara 中使用代理?

代理是测试脚本和网络服务器之间的中介,具有多种优势:

  1. 地理定位测试: 模拟来自不同国家或地区的访问。
  2. 绕过限制: 绕过某些网站施加的基于 IP 的限制或速率限制。
  3. 匿名性: 在测试过程中隐藏您的真实 IP 地址,以免被标记为僵尸。
  4. 监控流量: 记录和检查 HTTP 请求,以便调试。

推荐的住宅代理服务

  • Bright Data - 最大的提供商,精确定位,代理管理器工具,起价 $5.04/GB
  • Oxylabs - 广泛的网络、精确的定位、专门的支持,起价 $4/GB
  • Smartproxy - 大量资源、广泛地点、自助服务,起价 $2.2/GB
  • Webshare - 定制选项、自助服务、经济实惠,起价为 $4.5/GB
  • SOAX - 灵活轮换、精确定位、全天候支持,起价 $2.2/GB

我与上述任何提供商均无关联。

先决条件

在使用 Capybara 设置代理之前,请确保具备以下条件:

  • 已安装 Ruby: Capybara 基于 Ruby 运行,因此请确保安装了最新版本。
  • 卡皮巴拉 用于网络测试的核心库。可使用以下命令安装:
gem install capybara
  • 代理服务器:您可以根据自己的需要使用免费或付费代理服务(如我上面提到的那些)。请确保您有代理 IP、端口,必要时还有验证详细信息(用户名和密码)。

在 Capybara 中设置代理

Capybara 可与 Selenium、RackTest 等网络驱动程序交互。不过,要使用代理,我们需要对驱动程序进行相应配置。

步骤 1:安装所需的网络驱动程序

要使用代理,Selenium 是最合适的驱动程序。如果尚未安装 Selenium,可以运行

gem install selenium-webdriver

第 2 步:配置 Capybara 以使用 Selenium

接下来,需要对 Capybara 进行配置,以便通过代理使用 Selenium。你可以直接在测试设置或配置文件中定义你的设置。下面是一个使用 Chrome 浏览器的示例:

require 'capybara'
require 'capybara/dsl'
require 'selenium-webdriver'
Capybara.register_driver :selenium_with_proxy do |app|
proxy = Selenium::WebDriver::Proxy.new(
http: 'your-proxy-address:your-port',
ssl: 'your-proxy-address:your-port'
)
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
proxy: proxy
)
options = Selenium::WebDriver::Chrome::Options.new
Capybara::Selenium::Driver.new(app、 browser: :chrome, capabilities: [capabilities], options: options)
end
Capybara.default_driver = :selenium_with_proxy

该设置将 Capybara 配置为在 Chrome 浏览器中使用 Selenium,并提供 HTTP 和 SSL 代理设置。将 "your-proxy-address"(你的代理服务器地址)和 "your-port"(你的代理服务器端口)替换为你的代理服务器详细信息。

步骤 3:处理代理身份验证

某些代理需要身份验证(用户名和密码)。您可以通过配置 Selenium WebDriver 功能来解决这个问题,如下所示:

proxy = Selenium::WebDriver::Proxy.new(
http: 'username:password@your-proxy-address:your-port',
ssl: 'username:password@your-proxy-address:your-port'
)
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
proxy: proxy
)

在此设置中,用户名和密码直接包含在代理字符串中。在代码中使用凭证等敏感信息时要谨慎。请考虑使用环境变量来安全地存储凭证。

步骤 4:在测试中使用代理

代理设置完成后,就可以像往常一样开始编写 Capybara 测试了。例如

describe 'Proxy Test', type: :feature do
it 'browses through a proxy' do
visit 'http://example.com'
expect(page).to have_content('Example Domain')
end
end

现在,该测试将使用驱动程序中配置的代理设置。流量将通过代理服务器,使您可以从不同的 IP 地址执行测试。

火狐浏览器的代理设置

如果你更喜欢使用火狐浏览器而不是 Chrome 浏览器,下面是修改配置的方法:

Capybara.register_driver :selenium_with_proxy do |app|
proxy = Selenium::WebDriver::Proxy.new(
http: 'your-proxy-address:your-port',
ssl: 'your-proxy-address:your-port'
)
options = Selenium::WebDriver::Firefox::Options.new
options.add_argument(' - proxy-server=your-proxy-address:your-port')
Capybara::Selenium::Driver.new(app、 browser: :firefox, options: options)
end
Capybara.default_driver = :selenium_with_proxy

其结构与 Chrome 浏览器的设置类似,但选项是为 Firefox 量身定制的。

故障排除技巧

  • 代理连接错误: 仔细检查代理地址、端口和验证详细信息。
  • Selenium WebDriver 更新: 保持 Selenium 和 Capybara 库的更新,因为网络驱动 API 可能会发生变化。
  • 性能问题: 使用代理服务器可能会减慢测试速度,尤其是在代理服务器延迟较高的情况下。

结论

在测试网站时,使用 Capybara 代理可以让我更加灵活。无论我是需要访问特定地区的内容、规避限制或只是增加一点隐私,设置代理都能改善我的测试过程。按照前面的步骤,我可以轻松地使用 Selenium 将代理添加到我的 Capybara 测试中。

类似文章