2
votes

Impossible de supprimer la notification «conserver / supprimer» lors du téléchargement des fichiers «.eml»

Comment puis-je me débarrasser de cette notification keep / discard lors du téléchargement de fichiers via python sélénium chromedriver?

J'ai essayé ce qui suit mais je n'ai pas réussi:

from selenium import webdriver

url = "https://www.online-convert.com/file-format/eml"

dirf = r"C:\Users\WCS\Desktop\emlfolder"

def download_file(link):
    driver.get(link)
    driver.find_element_by_css_selector("a[href$='example.eml']").click()

if __name__ == '__main__':
    chromeOptions = webdriver.ChromeOptions()
    prefs = {'download.default_directory' : dirf}
    chromeOptions.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome(chrome_options=chromeOptions)
    download_file(url)

EDIT: Il semble que j'ai découvert un autre site Web contenant un tel fichier ".eml" qui envoie la même notification en cliquant sur ce lien se terminant par .eml . / p>

Exemple de lien vers un site Web

J'essaye avec l'approche ci-dessous:

chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chromeOptions.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)

La notification ressemble exactement à l'image ci-dessous:

 entrez la description de l'image ici a>

Btw, je lance un clic sur ce lien pour télécharger uniquement parce que le site que j'ai expérimenté n'a pas de véritable URL connectée à ces fichiers ".eml" pour naviguer. Il s'avère que la navigation vers ce lien ".eml" mène également à la même notification.


6 commentaires

Nous ne pouvons pas vous aider sans pouvoir analyser nous-mêmes le site.


windowsreport.com/type-of-file-can-harm-computer allègue que l'activation de "demander où enregistrer" supprimera cette alerte particulière. Cela semble concorder.


J'ai explicitement défini l'emplacement de ce répertoire de téléchargement dans le script comme prefs = {'download.default_directory': some_location} mais toujours avec la même notification @tripleee.


Cela semble distinct de la solution de contournement, mais IDK.


Vous pouvez maintenant vérifier @SimonF. Merci.


Je ne reçois pas cette notification, c'est peut-être une chose Windows et n'a rien à voir avec votre code


7 Réponses :


2
votes

C'est une fenêtre contextuelle liée à la navigation sécurisée. essayez

  chromeOptions = webdriver.ChromeOptions()
  prefs = {'safebrowsing.enabled': 'false'}
  chromeOptions.add_experimental_option("prefs", prefs)
  driver = webdriver.Chrome(chrome_options=chromeOptions)


3 commentaires

J'ai essayé votre suggestion tout à l'heure mais cela ne semble pas avoir d'effet sur cette notification @murali sélénium. Il apparaît toujours.


Donnez-moi l'URL si possible je vais essayer


Cette URL est protégée par connexion, donc cela ne vous sera d'aucune utilité. Merci.



-1
votes

vous pouvez essayer d'ajouter l'argument suivant

chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--safebrowsing-disable-download-protection')
driver = webdriver.Chrome(chrome_options=chromeOptions)


1 commentaires

J'ai également essayé votre suggestion @cieunteung mais je reçois toujours la même notification que celle que vous voyez dans l'image ci-dessus.



5
votes

Vous devez spécifier l'extension de fichier que vous souhaitez télécharger

prefs = {
    'download.default_directory': dirf,
    'download.prompt_for_download': False,
    'download.extensions_to_open': 'eml',
    'safebrowsing.enabled': False
}

options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)


3 commentaires

Lorsque j'ai essayé votre suggestion dans mon script, il a téléchargé le fichier eml et a finalement conduit à ouvrir une fenêtre contextuelle Outlook. Cependant, aujourd'hui, quand j'essaye à nouveau, cela a fonctionné parfaitement. Peux-tu me dire pourquoi? Je vais bientôt attribuer la prime. Merci.


@ robots.txt Vous at-il demandé de choisir un programme pour ouvrir le fichier? Windows le demande la première fois que vous ouvrez un nouveau type de fichier et enregistrez l'option.


J'ai essayé ce qui précède pour xml mais ne fonctionne pas La version du pilote chrome est la dernière



0
votes

Selon ceci: Comment désactiver la fenêtre contextuelle "Ce type de fichier peut endommager votre ordinateur" , vous aurez besoin de plusieurs options:

La réponse acceptée a cessé de fonctionner après une mise à jour récente de Chrome. Vous devez maintenant utiliser les commutateurs de ligne de commande --safebrowsing-disable-extension-blacklist et --safebrowsing-disable-download-protection .

Mais chaque fois qu'un membre de Google a des doutes sur les problèmes de sécurité liés à une option, il modifiera le comportement dans la prochaine version de Chrome. J'utilise Chrome 72 et les options mentionnées ci-dessus ne désactivent plus la notification.

La version courte: n'essayez pas de désactiver les mesures de sécurité. Les auteurs de logiciels malveillants sont formés pour le faire et tout bon développeur de navigateur semble penser "mieux vaut prévenir que guérir".

Si vous avez vraiment besoin d'une solution de téléchargement, vous pouvez utiliser le module de requêtes et télécharger sans chrome:

from selenium import webdriver
import requests

url = "https://www.online-convert.com/file-format/eml"

dirf = r"C:\Users\WCS\Desktop\emlfolder"

def download_file(link):
    driver.get(link)
    linkElement = driver.find_element_by_css_selector("a[href$='example.eml']")
    r = requests.get(linkElement.get_attribute('href'))
    file = open("C:\Users\WCS\Desktop\emlfolder\example.eml", 'wb')
    file.write(r.content)
    file.close()

if __name__ == '__main__':
    chromeOptions = webdriver.ChromeOptions()
    prefs = {'download.default_directory' : dirf}
    chromeOptions.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome(chrome_options=chromeOptions)
    download_file(url)
    driver.quit()


2 commentaires

Il n'y a pas de véritable URL connectée à chaque lien de téléchargement. Donc, utiliser le module de requêtes n'est pas un choix. J'ai suivi votre suggestion pour me débarrasser de cet avertissement / notification. Cependant, cela n'a pas fonctionné. Merci.


Vous pouvez créer votre propre URL en combinant l'URL de base de la page et le lien relatif. Mais ces paramètres de ligne de commande ne font rien dans le dernier code source de Chromium. Je l'ai vérifié en ligne.



0
votes

Vous pouvez essayer d'ajouter le site Web à la liste des sites de confiance de chrome, si je comprends votre code, il utilise votre installation de chrome, ce qui signifierait que si vous deviez modifier les paramètres dans chrome, le module python les utiliserait .

Chrome

Cliquez sur l'icône à 3 lignes horizontales à l'extrême droite de la barre d'adresses.

Cliquez sur Paramètres, faites défiler vers le bas et cliquez sur Afficher les paramètres avancés Lien Paramètres.

Cliquez sur Modifier les paramètres de proxy.

Cliquez sur l'onglet Sécurité> icône Sites de confiance, puis sur Sites.

Saisissez l'URL de votre site de confiance, puis cliquez sur Ajouter.

Cliquez sur Fermer> OK.


0 commentaires

0
votes

J'ai essayé de nombreux sites / forums sur Google et j'ai trouvé le code ci-dessous, mais il ne fonctionne toujours pas dans Chrome 72. Veuillez me faire savoir si vous trouvez une meilleure solution à ce problème.

System.setProperty("webdriver.chrome.driver", "chromedriver.exe file path")
String downloadFilepath = "C:\\Downloads";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
chromePrefs.put("safebrowsing.enabled", "false"); 
chromePrefs.put("download.prompt_for_download", "false");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--safebrowsing-disable-download-protection");
options.addArguments("--safebrowsing-disable-extension-blacklist");
options.addArguments("disable-extensions");
options.addArguments("test-type");
options.addArguments("start-maximized");
options.setExperimentalOption("prefs", chromePrefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);  
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new ChromeDriver(capabilities);

p>


0 commentaires

0
votes

J'ai utilisé de simples touches TAB et ENTER pour agir sur les boutons Keep / Discard de la fenêtre. Je n'ai pas trouvé de meilleure solution à ce problème et cela fonctionne pour moi comme solution de contournement.

if (File_Extn.contentEquals("msg")) // put extns like msg, pdf etc.. 
                    {           
                        for (int j=1; j<=TabCount; j++) // manually count total no. of tabs and replace with TabCount to reach keep button
                        {   
                            sleep(1);
                            System.out.println("hit tab keys to reach keep/discard button");
                            robot.keyPress(KeyEvent.VK_TAB);
                        }
                        System.out.println("hit enter key to click on keep button");
                         robot.keyPress(KeyEvent.VK_ENTER);
                    }


0 commentaires