2017-10-02 3 views
0

Ich muss eine interne Webseite meiner Organisation scrape. Wenn ich Schöne Seife ichScraping einer internen Webseite

„Unberechtigter Zugriff“

Ich will nicht meinen Benutzername/Passwort in dem Quellcode setzen, weil sie über Kollegen geteilt werden. Wenn ich die gleiche Web-URL mit Firefox öffne Es fragt mich nicht, mich anzumelden, das einzige Problem ist, wenn ich die gleiche Anfrage mit Python-Skript mache. Gibt es eine Möglichkeit, die gleiche Sitzung von Firefox mit einem Python-Skript zu teilen?

Ich denke meine Authentifizierung ist mit meinem PC, denn wenn ich abmelde alle Cookies löschen Wenn ich wieder einlogge ich mich da automatisch angemeldet. Weißt du warum mit meinem Python Script das nicht passiert?

+0

Nun, Sie sollten fragen, wer für den Webserver verantwortlich ist. –

+0

@KlausD.Ich bin auf der Suche nach Bibliotheken für den Zugriff auf eine Webseite zu einem Windows-verwalteten Anmeldeinformationen – sparkle

Antwort

0

Wenn Sie den Browser verwenden, um sich bei Ihrer Organisation anzumelden, geben Sie Ihre Anmeldeinformationen ein, und der Server gibt ein Cookie zurück, das an die Domäne Ihrer Organisation gebunden ist. Dieser Cookie hat ein Ablaufdatum und ermöglicht die Navigation auf der Website Ihrer Organisation, ohne dass Sie sich anmelden müssen, solange das Cookie gültig ist.

Sie können hier über Cookies lesen:
https://en.wikipedia.org/wiki/HTTP_cookie

Ihre Website Schaber muss nicht Ihre Anmeldeinformationen speichern. Löschen Sie zuerst die dann Cookies, Browser Entwickler-Tools verwenden, können Sie (auf dem Registerkarte Netzwerk aussehen):

  1. Abbildung heraus, ob Ihre Organisation einen separaten Auth Endpunkt
    • verwendet Wenn es nicht klar ist, dann Sie könnten
  2. Verwenden Sie den auth-Endpunkt die IT-Abteilung bitten, einen Cookie mit Anmeldeinformationen in
  3. übergeben zu bekommen sehen Sie, wie dieses Cookie vom System verwendet wird (Blick auf den HTTP-Request/Response-Header)
  4. Verwenden Sie dieses Cookie die Website
  5. Teile Code frei zu kratzen - wenn jemand die Website kratzen muss, dann können sie in ihren Anmeldeinformationen übergeben entweder, oder eine Locke Befehl verwenden, um einen gültigen Cookie-Header
get/set
0

1) Vergewissern Sie sich nach der Authentifizierung in Ihrem Firefox-Browser, dass Sie den Cookie-Schlüssel/Wert erhalten.

2) anhand der Daten in dem folgenden Code:

from bs4 import BeautifulSoup 
import requests 

browser_cookies = {'your_cookie_key':'your_cookie_value'} 
s = requests.Session() 
r = s.get(your_url, cookies=browser_cookies) 
bsoup = BeautifulSoup(r.text, 'lxml') 

Die requests.Session() für die Persistenz ist. Eine weitere Tipps, können Sie auch Ihr Skript so nennen:

python3 /path/to/script/script.py cookies_key cookies_value 

Dann die beiden Werte mit sys-Modul erhalten. Der Code wird sein:

import sys 
browser_cookies = {sys.argv[1]:sys.argv[2]} 
+0

Ich denke, meine Authentifizierung ist mit meinem PC, denn wenn ich abmelde alle Cookies löschen, wenn ich wieder einlogge, weil ich mich automatisch angemeldet. Weißt du warum mit meinem Python Script das nicht passiert? – sparkle

+0

Haben Sie es mit einem anderen Browser versucht? – wbwlkr

+0

1) Ist Ihr Firefox-Setup mit einem Proxy von einer Art? 2) Auch sollten Sie die Header der Anfragen, die Sie senden (mit Ihrem Firefox-Browser), wenn Sie auf die authentifizierte Seite zugreifen. Es sollte Ihnen einige Hinweise geben: IP-Adresse, Benutzer-Agent ... Und dann können Sie versuchen, die gleichen Header in Ihrem Code zu setzen und senden Sie sie mit den gleichen Anforderungen, wo Sie die Cookies senden. – wbwlkr

Verwandte Themen