什么是代理?
代理充当客户端发送求和服务器响应之间的中介。代理的主要用途是维护多个交互系统之间的隐私和封装。
通过充当客户端和Web服务器之间的防火墙,代理还可以在Web上增加另一层安全。当客户端使用的网站必须根据网站内容标记为允许或阻止时,这一点尤其有用。
此过程称为“内容过滤”,最常用于教育机构、公司办公室等。内容过滤可以在代理的帮助下轻松完成。
在Internet上,代理可以实现为独立的服务器,它位于客户端计算机和实际的Web或数据库服务器之间进行响应。
在本教程中,将了解
- 什么是代理?
- SOCKS和HTTP代理之间的区别
- Chrome中使用Selenium实现HTTP代理认证的2种方法
- 使用AutoIT工具
- 使用告警
SOCKS和HTTP代理之间的区别
SOCKS | HTTP代理 |
---|---|
SOCKS代表安全插座。它通常用作客户端和服务器之间的防火墙 | HTTP代理也可以用作客户端和服务器之间的防火墙,但只能用于HTTP求 |
SOCKS不解释正在交换的数据 | HTTP代理解释客户端和服务器之间交换的数据 |
在性能方面较慢 | 与SOCKS相比,性能更好 |
Chrome中使用Selenium实现HTTP代理认证的2种方法
Chrome中使用Selenium的HTTP代理身份验证可以使用以下方法进行处理
- 使用AutoIT工具
- 使用告警
使用AutoIT工具
Auto IT是用于Windows桌面自动化的第三方工具。由于Selenium只处理基于Web的弹出窗口和窗口,因此使用Selenium无法处理操作系统控件。
这需要使用外部第三方工具(如Auto IT)与Selenium集成。为此,Auto IT最常用于处理网站上的文件上传和文件下载。
要使用AutoIT,需要在本地计算机上下载并安装AutoIT软件。
本文介绍了AutoIT的下载安装。
打开程序-Autoit工具-SCite脚本编辑器,在Autoit编辑器中添加下面提到的AutoIt脚本,并将其保存为系统中的‘ProxyAuthentication.au3
编译该文件并将其转换为“ProxyAuthentication.exe”。
在Eclipse中,将Auto IT文件添加到Selenium脚本并运行
下面是HTTP代理身份验证的AutoIT脚本
Send("guru99{ENTER}")
Send("guru99{ENTER}")
需要使用以下代码传递Auto IT文件以便在Selenium Webdriver上执行
源代码:
package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AutoITDemo {
public static void main(String[] args) throws IOException {
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");;
WebDriver driver = new ChromeDriver();
driver.get("http://www.itxiaonv.com/test/basic_auth.php");
//Passing the AutoIt Script to Selenium
Runtime.getRuntime().exec("D:\\Data_Personal\\ProxyAuthentication.exe");
}
}
代码说明:
- 在第一步中,通过将系统属性设置为指向chromedriver.exe文件来初始化Chrome驱动程序的实例
- 在第二步中,将初始化Web驱动程序的对象,并使用GET方法传递网站URL
- 最后,使用AutoIT脚本文件将用户名和密码传递给HTTP代理身份验证弹出窗口
代码输出:
使用AutoIT处理用户名告警
使用AutoIT处理密码告警
代理身份验证成功屏幕
使用alert
告警是Selenium Web驱动程序提供的简单内置功能。可以使用Selenium Web驱动程序处理代理身份验证弹出窗口,方法是借助Send Key方法切换到HTTP代理身份验证。
示例:
测试场景:
处理网站上的HTTP proxy身份验证弹出窗口:http://www.itxiaonv.com/test/basic_auth.php,使用Selenium web driver中的Alerts。
源代码示例:
package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AlertsDemo {
public static void main(String args[]) throws IOException {
System.setProperty("webdriver.chrome.driver", "D:\\Data_Personal\\Software\\chromedriver_win32\\chromedriver.exe");;
WebDriver driver = new ChromeDriver();
driver.get("http://www.itxiaonv.com/test/basic_auth.php");
// Handling Username alert
driver.switchTo().alert().sendKeys("guru99");
driver.switchTo().alert().accept();
// Handling Password alert
driver.switchTo().alert().sendKeys("guru99");
driver.switchTo().alert().accept();
}
}
代码输出:
代理身份验证已成功完成。
代码说明:
- 最初,通过将Webdriver属性设置为指向chromedriver.exe文件的位置来实例化Chrome驱动程序的实例
- 然后,通过将url作为参数传递给 driver.get() 方法来打开所需网站的url
- 一旦打开URL,将切换到用户名告警并发送username-guru99。然后使用alert.Accept方法单击告警上的OK按钮
- 然后,将切换到密码告警并发送密码-guru99。然后使用alert.Accept方法单击告警上的OK按钮
总结
- 代理充当客户端发送求和服务器响应之间的中介。代理的基本用途是维护多个交互系统之间的隐私和封装。
- Chrome中使用Selenium的HTTP代理身份验证可以使用以下方法进行处理
- 在网站URL中传递用户名和密码
- 使用AutoIT工具
- 使用告警
- 在上述三种方法中,使用告警是在Selenium Webdriver中处理HTTP代理身份验证的最有效方式