2012-03-29 12 views
5

मैं एक सर्वर पर एक वेब स्क्रैपिंग स्क्रिप्ट चलाने के लिए चाहता हूँ।पावर शैल वेब स्क्रैपिंग एसएसएल/टीएसएल अंक

वर्तमान स्क्रिप्ट निर्दिष्ट पृष्ठ पर एचटीएमएल एकत्र करता है।

$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 

इस समस्या या शायद चारों ओर पाने के लिए अगर तुम मुझे एक अलग दिशा इंगित कर सकता है तो मैं Sever के व्यवस्थापक html पृष्ठ से तत्वों को स्क्रैप कर सकते हैं के किसी भी विचार है।

धन्यवाद दोस्तों!

उत्तर

23

यह एक लाइनर SSL प्रमाणपत्र त्रुटियों पर ध्यान नहीं देगा:

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

स्व-हस्ताक्षरित अविश्वस्त प्रमाण पत्र, mismatching नाम या समाप्ति के बारे में त्रुटियाँ इस के बाद नजरअंदाज कर दिया जाएगा निष्पादित किया जाता है।

+0

आपको बहुत बहुत धन्यवाद! –

+7

और पुनर्स्थापित करने के लिए, बस '[System.Net.ServicePointManager] निष्पादित करें :: सर्वर प्रमाणपत्र प्रमाणन कॉलबैक = $ null' – mousio

+0

बहुत बहुत धन्यवाद! – hupseb

0

उपयोग 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

धन्यवाद माथीस, क्या इसे पावर शैल स्क्रिप्ट प्रारूप में परिवर्तित किया जा सकता है? –

+0

पीओएसएच में चलते समय इसे स्रोत से संकलित करें, यहां पर: http://poshcode.org/624 –

+0

कूल धन्यवाद दोस्त! –

संबंधित मुद्दे