Power Shell Web Scraping SSL / TSL Проблема - PullRequest
5 голосов
/ 29 марта 2012

Я хочу запустить веб-скрипт очистки на сервере.

Текущий скрипт собирает html на указанной странице.

$url = "http://websms"
 [net.httpWebRequest] $request = [net.webRequest]::create($url)
 [net.httpWebResponse] $response = $request.getResponse()
 $responseStream = $response.getResponseStream()
 $sr = new-object IO.StreamReader($responseStream)
 $result = $sr.ReadToEnd()

 $result

Это нормально работает на типичной веб-странице. Однако я хочу запустить его на странице администратора сервера, которая, конечно, требует входа в систему.

Я думал, что прежде чем пытаться войти, я попытаюсь почистить страницу входа на сервер. Запустив вышеуказанный скрипт, я получаю следующий результат.

   Exception calling "GetResponse" with "0" argument(s): "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."
At C:\temp\web3.ps1:3 char:56
+  [net.httpWebResponse] $response = $request.getResponse <<<< ()
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Любая идея о том, как обойти эту проблему или, возможно, если бы вы могли указать мне другое направление, чтобы я мог вычистить элементы со страницы администратора на сервере.

Спасибо, ребята!

Ответы [ 2 ]

23 голосов
/ 29 марта 2012

Этот один вкладыш будет игнорировать ошибки сертификата SSL:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

Ошибки, касающиеся самозаверяющих ненадежных сертификатов, несоответствующих имён или срока действия, будут игнорироваться после его выполнения.

0 голосов
/ 29 марта 2012

Используйте этот блестящий ответ :

public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...