San*_*rde 5 url .htaccess encoding selenium
我正在自动化一个需要 HTTP 基本身份验证的网站。
在大多数情况下,此链接中给出的建议非常有效:
您可以在 URL 参数中传递 HTTP 基本身份验证的用户名/密码吗?
但部分用户的密码中带有问号(?
)。请告知如何避免问号。
PS我知道@
在用户名中可以转义为%40
.
我假设您必须指的是传递用户凭据的 URL 的userinfo部分,而不是“URL 参数”(它是query-string的一部分):
https://<userinfo>@example.com/foo?<query-string>
Run Code Online (Sandbox Code Playgroud)
与 URL 任何部分中不允许出现的任何字符一样(因为它可能具有特殊含义),它必须进行 URL 编码(百分比编码),%
后跟该字符的两位十六进制代码。
所以,@
是%40
并且?
是%3F
。
但这些并不是唯一可能需要 URL 编码的两个字符。您应该通过脚本中的 URL 编码函数传递该值,以正确对 URL 的该部分进行 URL 编码。
RFC 3986定义了URL 的userinfo部分允许使用哪些字符(未编码) :
Run Code Online (Sandbox Code Playgroud)userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" pct-encoded = "%" HEXDIG HEXDIG sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Run Code Online (Sandbox Code Playgroud)
因此,其他所有内容都必须进行百分比编码,包括:
和%
- 如果它们是用户或密码部分的一部分(以便否定它们的特殊含义)。
同一份文件中还指出:
不推荐在 userinfo 字段中使用“user:password”格式。
因此,浏览器支持一直不完整,版本不断变化(安全性是首要问题)。我相信最新版本的 Chrome(已测试 v79)和 Firefox 确实支持 URL 中的用户凭据。我看到评论说这也适用于最新的 Safari(?),尽管这已经工作了很长时间并且目前对我不起作用(尽管我没有在 iOS 12.4.1 上运行最新版本) )。几年前,IE就不再支持 URL 中的用户名和密码,而且现在看起来也不会再回来了。
归档时间: |
|
查看次数: |
6877 次 |
最近记录: |