সেলেনিয়াম ব্যবহার করে শংসাপত্রগুলি কীভাবে মোকাবেলা করবেন?


86

আমি ব্রাউজার চালু করতে সেলেনিয়াম ব্যবহার করছি । আমি কীভাবে ওয়েবপৃষ্ঠাগুলি (ইউআরএল) সামলাতে পারি যা ব্রাউজারকে একটি শংসাপত্র গ্রহণ করতে বলবে বা না?

ফায়ারফক্সে আমার মতো একটি ওয়েবসাইট থাকতে পারে যা আমাকে এর শংসাপত্রটি গ্রহণ করতে বলে:

ফায়ারফক্স

ইন্টারনেট এক্সপ্লোরার ব্রাউজারে, আমি এই জাতীয় কিছু পেতে পারি:

এখানে চিত্র বিবরণ লিখুন

গুগল ক্রোমে:

গুগল ক্রম

আমি আমার প্রশ্নের পুনরাবৃত্তি করছি: আমি যখন সেলেনিয়াম (পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ) এর সাথে একটি ব্রাউজার (ইন্টারনেট এক্সপ্লোরার, ফায়ারফক্স এবং গুগল ক্রোম) চালু করি তখন কীভাবে কোনও ওয়েবসাইটের শংসাপত্রের গ্রহণযোগ্যতা স্বয়ংক্রিয় করতে পারি ?

উত্তর:


143

ফায়ারফক্সের জন্য আপনাকে এই accept_untrusted_certs FirefoxProfile()বিকল্পগুলি সেট করতে হবে True:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True

driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://cacert.org/')

driver.close()

Chrome এর জন্য আপনার যুক্তি যুক্ত করতে হবে :--ignore-certificate-errors ChromeOptions()

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('ignore-certificate-errors')

driver = webdriver.Chrome(chrome_options=options)
driver.get('https://cacert.org/')

driver.close()

ইন্টারনেট এক্সপ্লোরারের জন্য, আপনার acceptSslCertsপছন্দসই ক্ষমতা সেট করা দরকার :

from selenium import webdriver

capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
capabilities['acceptSslCerts'] = True

driver = webdriver.Ie(capabilities=capabilities)
driver.get('https://cacert.org/')

driver.close()

প্রকৃতপক্ষে, Desired Capabilitiesডকুমেন্টেশন অনুসারে , সমস্ত ব্রাউজারগুলির জন্য acceptSslCertsদক্ষতা নির্ধারণের Trueকাজটি করা উচিত কারণ এটি সাধারণ পাঠ / লেখার ক্ষমতা:

গ্রহণএসএসএলকার্টস

বুলিয়ান

সেশনের ডিফল্টরূপে সমস্ত এসএসএল শংসাপত্র গ্রহণ করা উচিত।


ফায়ারফক্সের জন্য ওয়ার্কিং ডেমো:

>>> from selenium import webdriver

এতে সেট acceptSslCertsকরা False:

>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = False
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Untrusted Connection
>>> driver.close()

এতে সেট acceptSslCertsকরা True:

>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = True
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Welcome to CAcert.org
>>> driver.close()

12
আমি এটি আইই 11 তে কাজ করতে সক্ষম হচ্ছি না, এটি আমাকে শংসাপত্রের ত্রুটি পৃষ্ঠাটি
দেখিয়ে চলেছে

ফায়ারফক্স 48+ এর জন্য জেকোড্রাইভার ব্যবহার করার পরেও সমস্যা রয়েছে, এটি গেকোড্রাইভারে প্রকাশ্য সমস্যা, তাদের এখনও এটির জন্য কোনও ধারণা নেই, বাগ ইস্যুটি দেখুন
অল্টার হু

6
এই উত্তরটি আর বৈধ নয়, পরিবর্তে 'গ্রহণযোগ্যইনসিকিউরস' ব্যবহার করুন
rtaft

4
এই মন্তব্যটি এখন খুব দেরিতে হলেও লোকেরা এখন প্রশ্নে পৌঁছানোর জন্য সহায়ক হতে পারে। আমি উপরের সমস্ত চেষ্টা করেছিলাম এবং কিছুই কাজ করে না। কেবল এর সাথে ত্রুটিটি পাস করতে পেরেছি:driver.get("javascript:document.getElementById('overridelink').click()")
ডিয়েগো এফ মদিনা

4
ক্রোমড্রাইভারের জন্য আমি এই চারটি স্ট্রিংয়ের সমস্তগুলি অপশনগুলিতেই শেষ করে দিয়েছি adঅ্যাড_আরগমেন্ট -> allow-running-insecure-contentএবং ignore-certificate-errorsএবং allow-insecure-localhostএবং এবং unsafely-treat-insecure-origin-as-secure(আপনি আরও খুঁজে বের করার চেষ্টা করতে পারেন: strings /opt/google/chrome/chrome | grep insecureএবং অনুরূপ গ্রেপিং)
কীটপতঙ্গ

8

ফায়ারফক্সের জন্য:

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("default");
myprofile.setAcceptUntrustedCertificates(true);
myprofile.setAssumeUntrustedCertificateIssuer(true);
WebDriver driver = new FirefoxDriver(myprofile);

জন্য ক্রোম আমরা ব্যবহার করতে পারেন:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
driver = new ChromeDriver(capabilities);

জন্য ইন্টারনেট এক্সপ্লোরার আমরা ব্যবহার করতে পারেন:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
Webdriver driver = new InternetExplorerDriver(capabilities);

4
প্রশ্নটি পাইথন সম্পর্কে ছিল। আপনি কমপক্ষে লিখতে পারতেন কোন ভাষাটি।
ব্যবহারকারী 1

4
সাবধানতা অবলম্বন করুন, 'প্রোফাইলেসআইনি' অবমূল্যায়ন করা হয়েছে!
শুভ পাখি

আশা করি জাভা সংস্করণ ChromeOptions বিকল্পগুলিতে = নতুন ChromeOptions () সহায়তা করতে পারে; অপশন .এডএআরগমেন্টস ("- উপেক্ষা-এসএসএল-ত্রুটিগুলি = হ্যাঁ", "--ignore-प्रमाणपत्र-ত্রুটি"); ChromeDriver ড্রাইভার = নতুন ChromeDriver (বিকল্প);
রবার্তো পেট্রিলি

6

ফায়ারফক্স পাইথনের জন্য:

ফায়ারফক্স স্ব-স্বাক্ষরিত শংসাপত্র বাগটি এখন ঠিক করা হয়েছে: সামুদ্রিক ফায়ারফক্স ওয়েবড্রাইভ পাইথন স্প্লিন্টারের সাথে এসএসএল সার্ট গ্রহণ করুন

"গ্রহণযোগ্যস্ল্যাসার্টস" "মেনেজিনেসিকিউরেক্টস" দ্বারা প্রতিস্থাপন করা উচিত

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

caps = DesiredCapabilities.FIREFOX.copy()
caps['acceptInsecureCerts'] = True
ff_binary = FirefoxBinary("path to the Nightly binary")

driver = webdriver.Firefox(firefox_binary=ff_binary, capabilities=caps)
driver.get("https://expired.badssl.com")

4
এবং এখন ফায়ারফক্স 52 লাইভ। আপগ্রেড করুন ফায়ারফক্স , আপগ্রেড সেলেনিয়াম v3.3, ডাউনলোড geckodriver v0.15 প্রয়োজন এবং আপনি এমনকি বাইনারি পথ আর হবে না!
রুমি দেবেট

4

এবং সি # (। নেট কোর) এ ব্যবহার Selenium.Webdriverএবং এর Selenium.Chrome.Webdriverমতো:

ChromeOptions options = new ChromeOptions();
options.AddArgument("--ignore-certificate-errors");
using (var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),options))
{ 
  ...
}

3

পাইথন সেলেনিয়ামের মাধ্যমে হেডলেস ক্রোম সম্পর্কিত এই প্রশ্নে আসা লোকদের জন্য আপনি https://bugs.chromium.org/p/chromium/issues/detail?id=721739#c102 দরকারী হতে পারেন।

দেখে মনে হচ্ছে আপনি করতে পারেন

chrome_options = Options()
chrome_options.add_argument('--allow-insecure-localhost')

বা নীচের লাইনের পাশাপাশি কিছু (পাইথনের সাথে খাপ খাইয়ে নিতে হতে পারে):

ChromeOptions options = new ChromeOptions()
DesiredCapabilities caps = DesiredCapabilities.chrome()
caps.setCapability(ChromeOptions.CAPABILITY, options)
caps.setCapability("acceptInsecureCerts", true)
WebDriver driver = new ChromeDriver(caps)

3
    ChromeOptions options = new ChromeOptions().addArguments("--proxy-server=http://" + proxy);
    options.setAcceptInsecureCerts(true);

4
এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, যদিও সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না
Ak47

2

জাভাস্ক্রিপ্ট:

const capabilities = webdriver.Capabilities.phantomjs();
capabilities.set(webdriver.Capability.ACCEPT_SSL_CERTS, true);
capabilities.set(webdriver.Capability.SECURE_SSL, false);
capabilities.set('phantomjs.cli.args', ['--web-security=no', '--ssl-protocol=any', '--ignore-ssl-errors=yes']);
const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome(), capabilities).build();

2

আমি একই ইস্যুতে দৌড়ে গিয়েছিলাম সেলেনিয়াম এবং বেহাতকে নিয়ে। আপনি যদি প্যারামিটারগুলির মাধ্যমে পাস করতে চান তবে behat.ymlএটি দেখতে দেখতে যা দরকার তা এখানে:

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my-app.com
            default_session: selenium2
            selenium2:
                browser: firefox
                capabilities:
                    extra_capabilities:
                        acceptInsecureCerts: true

1

একটি প্রোফাইল তৈরি করা এবং তারপরে একজন ড্রাইভার আমাদের ফায়ারফক্সে শংসাপত্রের সমস্যাটি পেতে সহায়তা করে:

var profile = new FirefoxProfile();
profile.SetPreference("network.automatic-ntlm-auth.trusted-uris","DESIREDURL");
driver = new FirefoxDriver(profile);

4
ইন্টারনেট এক্সপ্লোরার এবং গুগল ক্রোম সম্পর্কে কী?

1

সেলেনিয়াম পাইথনে আপনাকে এই desired_capabilitiesহিসাবে সেট করতে হবে :

desired_capabilities = {
    "acceptInsecureCerts": True
}

1

যারা এই সমস্যাটিতে ফায়ারফক্স ব্যবহার করে এবং উপরের সমাধানগুলি কাজ করে না, আপনি নীচের কোডটি চেষ্টা করতে পারেন (আমার মূল উত্তরটি এখানে ))

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.DEFAULT_PREFERENCES['frozen']['marionette.contentListener'] = True
profile.DEFAULT_PREFERENCES['frozen']['network.stricttransportsecurity.preloadlist'] = False
profile.DEFAULT_PREFERENCES['frozen']['security.cert_pinning.enforcement_level'] = 0
profile.set_preference('webdriver_assume_untrusted_issuer', False)
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", temp_folder)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
                   "text/plain, image/png")
driver = webdriver.Firefox(firefox_profile=profile)

0

আপনার ব্রাউজারের শংসাপত্রের স্টোর থেকে প্রয়োজনীয় শংসাপত্র ছাড়া সমস্ত মুছুন এবং তারপরে কেবলমাত্র একটি শংসাপত্র উপস্থিত থাকলে স্বয়ংক্রিয়ভাবে শংসাপত্রটি নির্বাচন করতে ব্রাউজারটি কনফিগার করুন।


0

এই সমস্যা সম্পর্কিত একটি আপডেট।

ড্রাইভার প্রয়োজন:

Linux: Centos 7 64bit, Window 7 64bit

Firefox: 52.0.3

Selenium Webdriver: 3.4.0 (Windows), 3.8.1 (Linux Centos)

GeckoDriver: v0.16.0 (Windows), v0.17.0 (Linux Centos)

কোড

System.setProperty("webdriver.gecko.driver", "/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver");

ProfilesIni ini = new ProfilesIni();


// Change the profile name to your own. The profile name can 
// be found under .mozilla folder ~/.mozilla/firefox/profile. 
// See you profile.ini for the default profile name

FirefoxProfile profile = ini.getProfile("default"); 

DesiredCapabilities cap = new DesiredCapabilities();
cap.setAcceptInsecureCerts(true);

FirefoxBinary firefoxBinary = new FirefoxBinary();

GeckoDriverService service =new GeckoDriverService.Builder(firefoxBinary)
    .usingDriverExecutable(new 
File("/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver"))
    .usingAnyFreePort()
    .usingAnyFreePort()
    .build();
try {
    service.start();
} catch (IOException e) {
    e.printStackTrace();
}

FirefoxOptions options = new FirefoxOptions().setBinary(firefoxBinary).setProfile(profile).addCapabilities(cap);

driver = new FirefoxDriver(options);
driver.get("https://www.google.com");

System.out.println("Life Title -> " + driver.getTitle());
driver.close();

0

আমি সেলেন্টিয়াম ওয়েব ড্রাইভার 3.1 এর সাথে ফ্যান্টমজেএসড্রাইভারের সাথে নেট নেট # তে এটি করতে সক্ষম হয়েছি

 [TestMethod]
    public void headless()
    {


        var driverService = PhantomJSDriverService.CreateDefaultService(@"C:\Driver\phantomjs\");
        driverService.SuppressInitialDiagnosticInformation = true;
        driverService.AddArgument("--web-security=no");
        driverService.AddArgument("--ignore-ssl-errors=yes");
        driver = new PhantomJSDriver(driverService);

        driver.Navigate().GoToUrl("XXXXXX.aspx");

        Thread.Sleep(6000);
    }

0

আমি যখনই নতুন ব্রাউজারগুলির সাথে এই সমস্যাটিতে চলে আসি তখন আমি নির্দিষ্ট অ্যাপ্লিকেশন স্থানাঙ্কগুলিতে বা বোতামগুলির মাধ্যমে ট্যাবটি ক্লিক করে ক্লিক করতে অ্যাপ্রোবোটিক ব্যক্তিগত সংস্করণটি ব্যবহার করি।

মূলত এটি কেবল এর ম্যাক্রো কার্যকারিতাটি ব্যবহার করছে, তবে মাথা বিহীন সেটআপগুলিতে কাজ করবে না।


0

আমি সঠিক একই সমস্যা ছিল। তবে আমি যখন ব্রাউজারটিতে ম্যানুয়ালি ওয়েবসাইটটি খোলার চেষ্টা করেছি শংসাপত্রটি সঠিক ছিল, তবে বিশদটিতে নামটি ছিল "ডোনট্রাস্ট"।

শংসাপত্রের পার্থক্য ফিডলারের কারণে হয়েছিল যা পটভূমিতে চলছিল এবং সমস্ত এইচটিটিপিএস সামগ্রী পুনরায় এনক্রিপ্ট করার আগে ডিক্রিপ্ট করে।

আমার সমস্যা সমাধানের জন্য, মেশিনে ফিদলারের বন্ধ করুন। আপনার যদি ফিডলারকে খোলা রাখা দরকার হয় তবে আপনি ফিজলার সেটিংসে ডিক্রিপ্ট এসএসএলটি চেক করতে পারেন।


0
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-certificate-errors");
driver = new ChromeDriver(options);

আমি এটি জাওয়ার জন্য ক্রোম ব্রাউজারের সাথে ব্যবহার করেছি এটি দুর্দান্ত কাজ করছে


4
এই কোডটি কীভাবে এবং কেন এই সমস্যার সমাধান করে তার ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে যদিও আপনার পোস্টের গুণমান উন্নত করতে সত্যই সহায়তা করবে এবং সম্ভবত আরও বেশি ভোটের ফলাফল হবে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, কেবল এখন যে ব্যক্তি জিজ্ঞাসা করছেন তা নয়। ব্যাখ্যা যুক্ত করতে আপনার উত্তরটি সম্পাদনা করুন এবং কোন সীমাবদ্ধতা এবং অনুমানগুলি প্রযোজ্য তা একটি ইঙ্গিত দিন।
ডেভিড বাক

-3

দেখে মনে হচ্ছে এটি এখনও এই সমস্যার একটি মানিক সিদ্ধান্ত নেই decision অন্য কথায় - আপনি এখনও "ওকে, একটি শংসাপত্রটি বলতে পারেন না, আপনি যদি ইন্টারনেট এক্সপ্লোরার, মজিলা বা গুগল ক্রোম হন তবে"। তবে আমি একটি পোস্ট পেয়েছি যা মোজিলা ফায়ারফক্সে সমস্যাটি কীভাবে কাজ করবে তা দেখায়। আপনি যদি এটিতে আগ্রহী হন তবে আপনি এটি এখানে পরীক্ষা করতে পারেন ।


তবে জাভাতে উপরের কোড সম্পর্কে কী হবে? এটি প্রতিটি ব্রাউজারকে বর্তমান ভিজিট করা ওয়েবসাইটের শংসাপত্র গ্রহণ করতে বলছে। পাইথনে আমরা কি একই কাজ করতে পারি না?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.