0

我正在尝试为Oracle WebLogic Server二进制文件创建Chocolatey包。我知道我必须通过一个特殊的 cookie 才能“接受许可”。但是,我在试图通过登录表单时遇到了困难。我一直在研究如何使用or来完成它,并且我正在尝试将其映射到,如果适用。wgetcurlSystem.Net.WebClient

到目前为止,我有以下内容,适用于其他接受许可的 Oracle 下载(如 JDK)。

$url  = "http://download.oracle.com/otn/nt/middleware/12c/wls/1212/wls1212_dev.zip"
$temp = Join-Path $ENV:TEMP "oracle-weblogic-server.zip" 

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
$client.Headers.Add("Cookie", "gpw_e24=http://www.oracle.com")
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $temp)

我在几个地方读到Oracle 下载页面支持“基本”身份验证。这应该意味着设置一个NetworkCredential. 所以,我在下载之前设置了这个......

$client.Credentials = New-Object System.Net.NetworkCredential("username", "password")

但是,响应似乎包含一个登录页面!(这里是表格的一个片段)。更新:我认为只有 Oracle 支持门户支持基本身份验证 :(

<form action="https://login.oracle.com/mysso/signon.jsp" method="post" name="myForm">
  <input type="hidden" name="v" value="v1.4">
  <input type="hidden" name="p_submit_url" value="https://login.oracle.com:443/sso/auth">
  <input type="hidden" name="p_cancel_url" value="https://edelivery.oracle.com">
  <input type="hidden" name="p_error_code" value="">
  <input type="hidden" name="ssousername" value="">
  <input type="hidden" name="subscribername" value="">
  <input type="hidden" name="authn_try_count" value="0">
  <input type="hidden" name="contextType" value="external">
  <input type="hidden" name="username" value="string">
  <input type="hidden" name="contextValue" value="/oam">
  <input type="hidden" name="password" value="sercure_string">
  <input type="hidden" name="challenge_url" value="https://login.oracle.com/mysso/signon.jsp">
  <input type="hidden" name="request_id" value="903089276773533395">
</form>

我也尝试直接编写授权标头,但得到了相同的结果。

  $client.Headers.Add("Authorization", "Basic " + [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("${username}:${password}")))

我偶然发现了一条关于OTN不允许命令行身份验证的旧消息。我不知道如何验证这一点,但其他网站也在说同样的事情(不过他们可能会模仿一个来源)。但是,我发誓我已经看到人们使用andPOST获取凭据,但我现在找不到了。wget--post-data

我玩的WebClient.UploadValues无济于事。也许我选择了错误的名称或错误的 URL?我注意到响应中有一些重定向,当我手动查看流量时(检查元素 | Chrome 中的网络)。但是,我不知道如何处理这些信息!

$login = "https://login.oracle.com/mysso/signon.jsp"

$data = New-Object System.Collections.Specialized.NameValueCollection
$data.Add("username", "username")
$data.Add("password", "password")

$client.UploadValues($login, "POST", $data)

所以,首先,也是最重要的,有没有办法从命令行登录到 OTN。其次,我该怎么做WebClient

4

1 回答 1

1

这种方法可能会给您带来麻烦,因为似乎需要登录以专门确保它是另一端的人。

于 2014-01-29T08:08:57.533 回答