2012-03-29 30 views
5

Tôi muốn chạy tập lệnh cào web trên máy chủ.Web vỏ điện lưới Đang phát hành SSL/TSL Số phát hành

Tập lệnh hiện tại thu thập html trên trang được chỉ định.

$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 

Điều này hoạt động tốt trên một trang web điển hình. Tuy nhiên tôi muốn chạy nó trên một trang quản trị máy chủ mà tất nhiên yêu cầu đăng nhập.

Tôi đã nghĩ trước khi đăng nhập, tôi sẽ thử và xóa trang đăng nhập của máy chủ. Chạy kịch bản trên tôi nhận được kết quả sau.

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 

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này hoặc có thể nếu bạn chỉ cho tôi một hướng khác để tôi có thể cạo phần tử từ trang quản trị html của máy chủ.

Cảm ơn các bạn!

Trả lời

23

này lót sẽ bỏ qua lỗi chứng chỉ SSL:

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

lỗi liên quan đến giấy chứng nhận không tin cậy tự ký, tên mismatching hoặc hết hạn sẽ bị bỏ qua sau này được thực thi.

+0

Cảm ơn bạn rất nhiều! –

+7

Và để khôi phục, chỉ cần thực hiện '[System.Net.ServicePointManager] :: ServerCertificateValidationCallback = $ null' – mousio

+0

Cảm ơn bạn rất nhiều! – hupseb

0

Sử dụng this brilliant answer:

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); 
+0

Cảm ơn Mathias, Có thể chuyển đổi sang định dạng Power Shell Script không? –

+0

Chỉ cần biên dịch từ nguồn khi chạy trong PoSH, như ở đây: http://poshcode.org/624 –

+0

Cảm ơn bạn thân! –