2017-10-18 4 views
0

J'injecte du code JS sur divers sites Web (en utilisant Selenium et Python) pour envoyer des requêtes POST à ​​mon serveur Web local. Sur certains sites, cela fonctionne très bien. Mais surtout, je ne reçois pas les demandes. Figuré c'est à cause de la politique de sécurité du contenu.Comment surmonter la directive Ajax Politique de sécurité du contenu?

Par exemple, lorsque je tente d'exécuter le code à l'aide de la console dans Chrome sur github.com, je reçois une erreur suivant:

Refused to connect to ' http://10.50.50.127:7777/ ' because it violates the following Content Security Policy directive: "connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com ...".

Mon code ressemble à ceci:

function sendData() { 
      var request = new XMLHttpRequest(); 
      request.open('POST', 'http://10.50.50.127:7777', false); 
      request.send("test"); 
     } 

I J'ai fait quelques recherches sur moi-même, et j'ai trouvé une solution possible - utiliser un serveur proxy local et envoyer des données à un chemin relatif comme "/ test". Mais c'est assez compliqué d'écrire un serveur proxy à partir de zéro. Alors, que puis-je faire pour surmonter cette politique de sécurité du contenu?

Répondre

0

Si vous avez contrôlé sur les deux côtés, vous pouvez utiliser.

https://easyxdm.net/wp/

Cordialement

+0

Malheureusement, je n'ai aucun contrôle sur le back-end. –

+0

faites-vous un appel ajax à votre serveur? –

+0

les sites ne sont pas à moi, donc je n'ai pas accès au côté back-end –

0

I figured it! Il s'avère que vous pouvez simplement désactiver toutes les vérifications de sécurité:

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--disable-web-security') 
chrome_options.add_argument('--allow-running-insecure-content') 
browser = webdriver.Chrome(chrome_options=chrome_options)