Script d'envoi de sms depuis sfr

Soyez le premier à donner votre avis sur cette source.

Vue 13 613 fois - Téléchargée 912 fois

Description

Ce petit script vous permet d'envoyer des SMS depuis votre compte SFR (Vous avez besoin d'un identifiant et d'un mot de passe). Il se connecte pour vous sur le site de SFR par la librairie de CURL, fait l'authentification et l'envoi du texto.

Ca m'embêtait d'avoir à chaque fois à taper mes identifiants pour envoyer des textos depuis mon PC, alors voici un petit script qui s'occupe de tout ce qui est connexion, formulaire, validation.

Le script a BESOIN d'un fichier cookie et surtout d'un fichier vide. Ça peut paraître étrange mais c'est requis lors de l'envoi de la requête vers SFR.

Source / Exemple :


<?php
/**

  • Script d'envoi de textos depuis un compte SFR
  • Envoi possible si le message ne dépasse pas 3 * 160 caractères (3 textos)
  • @author Tristan F. <darkm60@gmail.com> http://esya-creations.com
  • @version 1.0
  • @todo Envoi de MMS/Tester les destinataires multiples/Tester vers l'étranger/Préciser les erreurs
  • /
Define('AUTHENTIFICATION', 'http://www.sfr.fr/communiquer/messagerie/sfr-messagerie/authentification/'); Define('COOKIE_FILE','cookie.txt'); //Fichier COOKIE Define('EMPTY_FILE',"emptyfile.txt"); //DOIT être un fichier vide Define('USER_AGENT','Mozilla/5.0'); //User-agent Define('LOGIN','06123456789'); //Login de votre compte SFR (Votre numéro) Define('PASSWORD','1234'); //Password de votre compte SFR $cible = "0611223344"; $message = "Message à envoyer"; if(send_sms($cible,$message)) echo("Texto envoyé !"); else echo("Impossible de trouver le token ou message trop long. Message non transmis. Mauvais logins ?"); /**
  • Fonction d'envoi de sms
  • @param int $cible Numéro de téléphone du destinataire
  • @param int $message Message pour le destinataire. Supporte les accents. Jusqu'à 480 caractères.
  • @return int 1 si succès 0 en cas d'échec.
  • /
function send_sms($cible,$message) { //Encodage d $message = utf8_decode($message); $ch = curl_init(); // set url curl_setopt($ch, CURLOPT_URL, AUTHENTIFICATION); curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // $output contains the output string $output = curl_exec($ch); curl_close($ch); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_spring_cas_security_check"); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS,"target=&_eventId=&currentPage=&username=".LOGIN."&password=".PASSWORD); curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/index.do"); $ret = curl_exec($ch); if ($ret === FALSE) { die(curl_errno($ch)); } preg_match("!\"CSRFToken\" value=\"([0-9]*)!",$ret,$out); if(!isset($out[1])) { return 0; } $token = $out[1]; $array = Array( "CSRFToken" => $token, "idMessage" => '', "submitMethod" => 'web', "todo" => '', "boxId" => 'sent', 'galleryItem' => '-1', 'msisdns' => $cible, 'emails' => '', 'emoticones' => ':)', 'message' => $message, 'file' => '@'.realpath(EMPTY_FILE) ); curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/submit.do"); curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE)); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS,$array); $ret = curl_exec($ch); preg_match("!\"CSRFToken\" value=\"([0-9]*)!",$ret,$out); $token = $out[1]; //Confirmation $array = Array( "CSRFToken" => $token, "idMessage" => '', "submitMethod" => 'web', "todo" => '', "boxId" => 'sent', 'emoticones' => ':)', 'mms' => 'false', 'message' => $message ); curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/confirm.do"); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS,$array); $ret = curl_exec($ch); curl_close($ch); if(strpos($ret,"Le Texto a été expédié avec succès&nbsp;!") === false) return 0; else return 1; return 1; } ?>

Conclusion :


Des améliorations seront à venir :
  • Gestion de l'envoi des MMS
  • Destinataires multiples (Je n'ai pas encore testé)
  • Textos vers l'étranger ?
  • Préciser les erreurs
  • Petit fichier HTML à côté avec un formulaire basique.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
9
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
1 septembre 2009

Bonjour à tous,

Je suis contente de trouver cet exemple, car je vais essayer de m'en inspirer pour mon besoin perso, qui y ressemble un peu !

Je voudrais automatiser en php ces instructions :
- aller sur http://www.unsite.html/moncompte/index.php une première fois car à la première connexion de la journée, un pavé s'affiche demandant de cliquer pour accéder au site (il doit y avoir le dépôt d'un cookie, car d'un autre ordinateur avec la même IP ça recommence)
- aller sur http://www.unsite.html/moncompte/index.php une seconde fois pour y entrer mon identifiant et mon mot de passe
- recevoir et mémoriser la page renvoyée une fois connectée
- aller sur http://www.unsite.html/moncompte/logout.php pour me déconnecter de mon compte.
- traiter les informations mémorisées

J'ai essayé de le faire en javascript à partir d'un parent pour gérer une frame ou tout autre contenant, c'est impossible pour une faille de sécurité xxs ou xss (je ne sais plus).

Je reviendrai vous donner le fruits de mes adaptations.
Si vous avez des suggestions, elle seront bienvenues, évidemment ;-)
Messages postés
10
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
23 janvier 2010

nous y travaillons c'est un prob de cookies
Messages postés
1
Date d'inscription
jeudi 6 avril 2006
Statut
Membre
Dernière intervention
27 décembre 2010

Bonjour,

Même problème, il semblerait qu'SFR ait changé de système de manière à bloquer ce genre d'utilisation afin que les gens souscrivent à leurs APIs ...
Il reste donc à trouver une alternative, ou un moyen de passer ce nouveau système :)
Messages postés
2
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
15 mars 2007

Bonjour,
Merci beaucoup pour ce script.
J'ai réussit a le faire fonctionner au mois de février et depuis ce temps, je ne t'avais pu utilisé.

J'ai voulu ré-utilisé ce code, mais il ne fonctionne plu. Est ce que le problème est le même chez vous ?

Cordialement.
Messages postés
10
Date d'inscription
mercredi 20 janvier 2010
Statut
Membre
Dernière intervention
23 janvier 2010

plus de probleme
<?php
/**
* Script d'envoi de textos depuis un compte SFR

*/

Define('AUTHENTIFICATION', 'http://www.sfr.fr/communiquer/messagerie/sfr-messagerie/authentification/');
Define('COOKIE_FILE','cookie.txt'); //Fichier COOKIE
Define('EMPTY_FILE',"emptyfile.txt"); //DOIT être un fichier vide
Define('USER_AGENT','Mozilla/5.0'); //User-agent
Define('LOGIN','000000000'); //Login de votre compte SFR (Votre numéro)
Define('PASSWORD','00000'); //Password de votre compte SFR

$tel = $_POST['$tel'];

$cible= $_POST['$cible'];
$ciblefin = $_POST['$ciblefin'];
$image = "image1.jpg";
$message = "Message a envoyer";


if(send_sms($cible,$message,$image)) echo("sms ok au : $cible");
else echo("Impossible de trouver le token ou message trop long. Message non transmis. Mauvais logins ?");

/**
* Fonction d'envoi de sms
*
* @param int $cible Numéro de téléphone du destinataire
* @param int $message Message pour le destinataire. Supporte les accents. Jusqu'à 480 caractères.
* @return int 1 si succès 0 en cas d'échec.
*/
function send_sms($cible,$message)
{
//Encodage d
$message = utf8_decode($message);

$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, AUTHENTIFICATION);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

curl_close($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_spring_cas_security_check");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,"target=&_eventId=¤tPage=&username=".LOGIN."&password=".PASSWORD);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$ret = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/index.do");

$ret = curl_exec($ch);

if ($ret === FALSE) {
die(curl_errno($ch));
}

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);

if(!isset($out[1]))
{
return 0;
}

$token = $out[1];

$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'galleryItem' => '-1',
'msisdns' => $cible,
'emails' => '',
'emoticones' => ':)',
'message' => $message,
'file' => '@'.realpath(EMPTY_FILE)
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/submit.do");
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);
$token = $out[1];

//Confirmation
$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'emoticones' => ':)',
'mms' => 'false',
'message' => $message
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/confirm.do");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

curl_close($ch);

if(strpos($ret,"Le Texto a été expédié avec succès !") === false) return 0;
else return 1;

return 1;
}
?>

<html>
<head>
<title>Destination 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<meta http-equiv="refresh" content="3; URL=http://localhost:8888/MMS/serveur/mms1.php">

</html>
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.