Voilà ça fait plusieurs jours que je cherche comment récupérer le code source d'une page protégée par htaccess (login et mot de passe), sans rien trouver.
Après plusieurs heures de recherche j'ai enfin trouvé, donc je publie cette source qui sera certainement très utile pour certains :)
Objet de connexion nécessaire : un winsock
Source / Exemple :
Dim Port As Integer
Dim Codes As String
Dim Login As String
Dim Password As String
Login = "votre_login"
Password = "votre_password"
Port = 80 'port HTTP
Codes = Encoder(Login & ":" & Password)
'La fonction Encoder est une fonction à développer (cryptage Base64).
'Si les codes d'accès sont déjà connus, vous pouvez simplement utiliser un convertisseur par exemple à cette adresse :
'http://yansanmo.no-ip.org/contenu/?id=214
'Rappel : le code doit être encrypté sous la forme de Login:Mot_de_passe
''''''''''PREMIER CAS : CONNEXION A UN ROUTEUR''''''''''
Dim Adresse_IP As String
Adresse_IP = "192.168.0.1" 'IP de votre routeur, à modifier selon le cas.
Winsock.Connect Adresse_IP, Port
Private Sub Winsock_Connect()
Text1.Text = ""
Winsock.SendData "GET / HTTP/1.1" & vbCrLf & "User-Agent: Navigateur" & vbCrLf & _ 'nom du navigateur client (facultatif :) )
"Host: " & Adresse_IP & vbCrLf & "Authorization: Basic " & Codes & vbCrLf & vbCrLf 'envoi des codes cryptés, plus double retour chariot
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock.GetData data
Text1.Text = Text1.Text + data 'data contient donc le code source.
End Sub
''''''''''SECOND CAS : CONNEXION A UN SERVEUR WEB''''''''''
Dim Serveur As String
Serveur = "www.machin.com" 'Adresse du site
Winsock.Connect Serveur, Port
Private Sub Winsock_Connect()
Dim Page As String
Page = "http://www.machin.com/page.html/" 'avec le slash final
Winsock.SendData "GET " & Page & " HTTP/1.0" & vbCrLf & _ 'demande de récupération d'information + définition du protocole ainsi que sa version
"User-Agent: Navigateur" & vbCrLf & _ 'nom du navigateur client (facultatif :) )
"Accept: */*" & vbCrLf & "Accept: text/html" & vbCrLf & _ 'type de données acceptées
"Authorization: Basic " & Codes & vbCrLf & vbCrLf 'envoi des codes cryptés, plus double retour chariot
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock.GetData data
Text1.Text = Text1.Text + data 'data contient donc le code source.
End Sub
''''''''''''''''''''
Conclusion :
Informations supplémentaires :
http://fr.wikipedia.org/wiki/HTTP_Authentification
Une page de conversion rapide Base64 :
http://yansanmo.no-ip.org/contenu/?id=214
Je n'ai peut être pas été très très clair mais c'est assez complet, donc si vous avez une question n'hésitez pas et je serai plus précis :)
PS : pour une raison inconnue, il peut arriver qu'il faille plusieurs essais pour que ça marche :P.
Cela dit, la théorie est là.