Ich habe Probleme mit meinem bieten immer auf eine MediaWiki anmelden installieren im Intranet. Ich glaube, es liegt an der http-Authentifizierung, die das Wiki schützt.pywikipedia bietet mit https und http-Authentifizierung
Fakten:
- Die Wiki-Wurzel ist: https://local.example.com/mywiki/
- Wenn das Wiki mit einem Web-Browser besuchen, ein Pop-up für Enterprise-Anmeldeinformationen zu fragen kommt (ich nehme an, dies ist HTTP-Authentifizierung)
Dies ist, was ich in meinem user-config.py haben:
mylang = 'en'
family = 'mywiki'
usernames['mywiki']['en'] = u'Bot'
authenticate['local.example.com'] = ('user', 'pass')
Dies ist, was ich in mywiki_family.py haben:
# -*- coding: utf-8 -*-
import family, config
# The Wikimedia family that is known as mywiki
class Family(family.Family):
def __init__(self):
family.Family.__init__(self)
self.name = 'mywiki'
self.langs = { 'en' : 'local.example.com'}
def scriptpath(self, code):
return '/mywiki'
def version(self, code):
return '1.13.5'
def isPublic(self):
return False
def hostname(self, code):
return 'local.example.com'
def protocol(self, code):
return 'https'
def path(self, code):
return '/mywiki/index.php'
Wenn ich ausführen login.py -v -v, bekomme ich diese:
urllib2.urlopen(urllib2.Request('https://local.example.com/w/index.php?title=Special:Userlogin&useskin=monobook&action=submit', wpSkipCookieCheck=1&wpPassword=XXXX&wpDomain=&wpRemember=1&wpLoginattempt=Aanmelden%20%26%20Inschrijven&wpName=Bot, {'Content-type': 'application/x-www-form-urlencoded', 'User-agent': 'PythonWikipediaBot/1.0'})):
(Redundant traceback info here)
urllib2.HTTPError: HTTP Error 401: Unauthorized
(Ich bin mir nicht sicher, warum es hat ' . local.example.com/w‘anstelle von '/ mywiki')
dachte ich, es könnte zu example.com statt example.com/wiki zu authentifizieren versuchen, so änderte ich die authenticate Linie:
authenticate['local.example.com/mywiki'] = ('user', 'pass')
Aber dann bekomme ich eine HTTP 401.2 Fehler von IIS zurück:
Sie haben keine Berechtigung dieses Verzeichnis oder Seite mit den Anmeldeinformationen anzuzeigen, die Sie geliefert, weil Ihr Web-Browser ist ein WWW-Authenticate-Header-Feld Senden Der Webserver ist nicht für die Annahme konfiguriert.
Jede Hilfe, wie man das funktioniert, würde geschätzt werden.
aktualisieren Nach meiner Familiendatei Festsetzung, heißt es jetzt:
Informationen für Website mywiki Anfahrt: en ('http Fehler', 401, 'Unerlaubte',) ACHTUNG: konnte nicht geöffnet werden "https://local.example.com/mywiki/index.php?title=Non-existing_page&action=edit&useskin=monobook". Vielleicht ist der Server oder Ihre Verbindung ausgefallen. Erneuter Versuch in 1 Minute ...
schaute ich auf den HTTP-Header auf einem urllib2.ulropen Rufplan und es ist mit WWW-Authenticate: Verhandeln WWW-Authenticate: NTLM. Ich rate urllib2 und damit pywikipedia unterstützt das nicht?
Update Eine leckere Prämie für die Hilfe bei der Arbeit hinzugefügt. Ich kann mit Python-NTLM authentifizieren. Wie integriere ich das in pywikipedia?
Was Happe ns, wenn Sie in Python/pywikipedia/Ihren Codebasen nach diesen Fehlermeldungen suchen? Zeigt es auf eine Ursache? – hughdbrown
Sie müssen nur einen Urlopener-Handler vor dem Aufruf von Urllib2 registrieren. Meine Antwort wurde aktualisiert. – NicDumZ