A voir également:
- Connecter compte d'un site en C++
- Se connecter à gmail sur téléphone - Guide
- Créer un compte google - Guide
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
- Facebook se connecter à un autre compte - Guide
13 réponses
Ca dépend de la méthode d'authentification utilisée mais a priori en écrivant dans ton socket la bonne requête ça peut passer. Tu peux regarder ce qui est envoyé avec un navigateur avec des outils comme wireshark. Il suffit ensuite d'écrire la même chose dans le socket avec ton programme C++.
Bonne chance
Bonne chance
Merci mamiemando pour ta réponse.
Je vais essayer Wireshark.
Mais quel est le langage de programmation du navigateur ?
bobcena
Je vais essayer Wireshark.
Mais quel est le langage de programmation du navigateur ?
bobcena
Sous Windows XP.
T'aurais pas un petit code source ? :o
bobcena
T'aurais pas un petit code source ? :o
bobcena
Pour l'api Windows, demander sur le groupe pro de l'api
https://groups.google.com/forum/?hl=fr#!forum/fr.comp.os.ms-windows.programmation
(c'est très avancé, mais avec l'aide de Msdn, on finit toujours par comprendre les codes postés...)
https://groups.google.com/forum/?hl=fr#!forum/fr.comp.os.ms-windows.programmation
(c'est très avancé, mais avec l'aide de Msdn, on finit toujours par comprendre les codes postés...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolée mais je ne code pas sous windows. Je ne peux pas te dire comment fonctionne l'api windows. Pour ce qui est d'ouvrir des sockets il suffit de chercher sur google "c socket connect" et tu devrais trouver rapidement ton bonheur. Sous wireshark il suffit d'écouter le flux sur l'interface réseau adéquate et de faire clic droit "follow tcp stream" pour voir ce qui est écrit dans le socket.
Bonne chance
Bonne chance
J'ai trouvé des infos ici :
https://www.commentcamarche.net/contents/1053-les-fonctions-de-l-api-socket
et ici :
https://www.developpez.net/forums/d35253/systemes/reseaux/developpement/c-cpp-socket-server-client/
Mais je ne sais pas trop comment coder ça.
Quelqu'un n'a pas un code source ? ;-)
bobcena
https://www.commentcamarche.net/contents/1053-les-fonctions-de-l-api-socket
et ici :
https://www.developpez.net/forums/d35253/systemes/reseaux/developpement/c-cpp-socket-server-client/
Mais je ne sais pas trop comment coder ça.
Quelqu'un n'a pas un code source ? ;-)
bobcena
Il y a des milliers d'exemple d'ouverture de socket à trouver sur google...
Concrètement côté client tu remplis un socket avec la fonction socket() et ensuite tu la connectes à un serveur avec la fonction connect().
Côté serveur tu crées un sockaddr_in, tu crées le socket avec la fonction socket(), tu appelles bind pour spécifier sur quelle interface le socket travaille, et tu écoutes le trafic qui arrive sur ce socket avec la fonction listen() et la fonction accept() pour accepter une connexion.
https://fr.wikipedia.org/wiki/Berkeley_sockets
Une fois la connexion établie tu écris dans un socket avec la fonction send() et tu lis avec la fonction recv().
Quand tu as fini, tu fermes le socket avec la fonction close() ou shutdown(). Tout ceci est d'ailleurs très bien expliqué dans la faq...
Concrètement côté client tu remplis un socket avec la fonction socket() et ensuite tu la connectes à un serveur avec la fonction connect().
Côté serveur tu crées un sockaddr_in, tu crées le socket avec la fonction socket(), tu appelles bind pour spécifier sur quelle interface le socket travaille, et tu écoutes le trafic qui arrive sur ce socket avec la fonction listen() et la fonction accept() pour accepter une connexion.
https://fr.wikipedia.org/wiki/Berkeley_sockets
Une fois la connexion établie tu écris dans un socket avec la fonction send() et tu lis avec la fonction recv().
Quand tu as fini, tu fermes le socket avec la fonction close() ou shutdown(). Tout ceci est d'ailleurs très bien expliqué dans la faq...
tu crées une socket (on l'appelle sock), tu la connectes sur le serveur (www.commentcamarche.net par exemple), sur le port 80 (pages web)
ensuites, tu envoies le texte suivant:
et tu lis la réponse renvoyée par le servir (affiches la sur la console)
tu obtiendra une page HTML! (plus les headers http)
ensuite, comme précisé, regardes ce que tu envoies avec wireshark lors de la conenxtion: tu verras ta requette qui contient tes champs login et mots de passe... tu envoies exactement la meme requette au serveur, et tu regardes la réponse, et tu sera "connecté" .
en fait, tu n'est pas connecté. ce qui te conenctera , c'est les cookies qui te serotn renvoyés, que tu devrai joindre à chaque requette...
comme précisé plus haut, l'esponnage de trammes avec wireshark est la clef. j'ai déja fait plusieurs programmes de communication en HTTP grâce à ca
ensuites, tu envoies le texte suivant:
GET / HTTP1.1\r\n host: www.commentcamarche.net\r\n \r\n
et tu lis la réponse renvoyée par le servir (affiches la sur la console)
tu obtiendra une page HTML! (plus les headers http)
ensuite, comme précisé, regardes ce que tu envoies avec wireshark lors de la conenxtion: tu verras ta requette qui contient tes champs login et mots de passe... tu envoies exactement la meme requette au serveur, et tu regardes la réponse, et tu sera "connecté" .
en fait, tu n'est pas connecté. ce qui te conenctera , c'est les cookies qui te serotn renvoyés, que tu devrai joindre à chaque requette...
comme précisé plus haut, l'esponnage de trammes avec wireshark est la clef. j'ai déja fait plusieurs programmes de communication en HTTP grâce à ca
L'API windows n'est pas forcément plus simple et en plus le code n'est pas portable par pour d'autres OS. Entre appeler 4 fonctions standards qui sont assez claires et largement documentées et les fonctions windows mon choix est assez vite fait...
Parce que bon sans méchanceté aucune si tu ne sais pas remplir une structure sock_addr... et appeler correctement bind, listen et compagnie en prenant un minimum le temps de lire les man ou un tutoriels, ça veut dire que le réseau n'est pas fait pour toi et qu'il faut changer de projet.
Parce que bon sans méchanceté aucune si tu ne sais pas remplir une structure sock_addr... et appeler correctement bind, listen et compagnie en prenant un minimum le temps de lire les man ou un tutoriels, ça veut dire que le réseau n'est pas fait pour toi et qu'il faut changer de projet.
puis au moins, coder sois même le protocole http permet de le comprendre, de savoir un peu mieu comment les choses se passent dans le navigateur, et de se rendre compte de certaines choses possibles (vol de session par exemple)... utiliser des choses toutes prêtes ca fait gagner du temps, mais ca limite la compréhsension
J'ai fait ce code source qui ne marche pas.
Disons que je veuille me connecter à un site comme Comment Ca Marche.net, comment faire ?
#include <stdlib.h>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <strings.h>
#include <string>
#include <fstream>
#include <windows.h>
#include <shellapi.h>
#include <winsock2.h>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
int descripteur;
descripteur = socket(AF_INET,SOCK_STREAM,0);
int connect(int socket,struct sockaddr * addr,int * addrlen);
string buffer = "GET / HTTP1.1\r\n"
"host: www.commentcamarche.net\r\n"
"\r\n";
int send(int socket, buffer, int len, 0);
int listen(int socket,int backlog)
std::cout << listen;
system("PAUSE");
return 0;
}
Clarifiez moi ce code source svp ;-)
bobcena
PS : Je suis côté client
Disons que je veuille me connecter à un site comme Comment Ca Marche.net, comment faire ?
#include <stdlib.h>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <strings.h>
#include <string>
#include <fstream>
#include <windows.h>
#include <shellapi.h>
#include <winsock2.h>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
int descripteur;
descripteur = socket(AF_INET,SOCK_STREAM,0);
int connect(int socket,struct sockaddr * addr,int * addrlen);
string buffer = "GET / HTTP1.1\r\n"
"host: www.commentcamarche.net\r\n"
"\r\n";
int send(int socket, buffer, int len, 0);
int listen(int socket,int backlog)
std::cout << listen;
system("PAUSE");
return 0;
}
Clarifiez moi ce code source svp ;-)
bobcena
PS : Je suis côté client
déja: int connect(int socket,struct sockaddr * addr,int * addrlen);
c'est pas correcte, tu dois passer des parametres préalablement initialisés la dedan ... pas faire des déclarations !
sur cette aprtie la, je suis pas vraiment habitué aux socket C, honte sur moi mais j'utilise toujours les sockets de la MFC (ce qui n'est pas à faire!!!!)...
string buffer = "GET / HTTP1.1\r\n"
"host: www.commentcamarche.net\r\n"
"\r\n";
=>
string buffer = "GET / HTTP1.1\r\nhost: www.commentcamarche.net\r\n\r\n";
c'est pas correcte, tu dois passer des parametres préalablement initialisés la dedan ... pas faire des déclarations !
sur cette aprtie la, je suis pas vraiment habitué aux socket C, honte sur moi mais j'utilise toujours les sockets de la MFC (ce qui n'est pas à faire!!!!)...
string buffer = "GET / HTTP1.1\r\n"
"host: www.commentcamarche.net\r\n"
"\r\n";
=>
string buffer = "GET / HTTP1.1\r\nhost: www.commentcamarche.net\r\n\r\n";