HTTP logowanie na forum

HTTP logowanie na forum
M1
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:20
0

Witam chciałbym się zalogować na forum poprzez bibliotekę SFML ale jakoś nie idzie :|
wklejam kod:

Kopiuj
 
#include <iostream>
#include <SFML/Network.hpp>
#include <sstream>
using namespace std;

int main()
{
    sf::Http::Request request("/login.php", sf::Http::Request::Post);

    string login="sss";
    string haslo="zzzz";

    std::ostringstream stream;
    stream << "usrname=" << login << "&passwrd=" << haslo;
    request.setBody(stream.str());

     sf::Http http("http://darkwarez.pl/forum/");
    sf::Http::Response response = http.sendRequest(request);

    // check the status
    if (response.getStatus() == sf::Http::Response::Ok)
    {
        // check the contents of the response
        std::cout << response.getBody() << std::endl;
    }
    else
    {
        std::cout << "request failed" << std::endl;
    }

    return 0;
}

wynik: "request failed"

jeżeli byłby ktoś w stanie pomóc to bardzo dziękuje

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:5 minut
0

Włącz wireshark dodaj filtr: http.host=="darkwarez.pl" i popatrz co wysyła przeglądarka, a co wysyła twój kod (i jakie dostajesz odpowiedzi).
Pierwszy problem jaki widzę, to ścieżka w obiekcie http, powinno być raczej sf::Http http("http://darkwarez.pl/");
Drugi to czy jesteś pewien, że to jest prawidłowy sposób logowania (wracamy do wireshark), nie dostajesz jakiegoś authentication challenge?

Poza tym jak się tak raportuje błędy to ma się właśnie takie problemy, że nie wiadomo co się dzieje. Popraw tak (mniej więcej):

Kopiuj
#include <iostream>
#include <SFML/Network.hpp>
#include <sstream>
using namespace std;
 
int main()
{
    sf::Http::Request request("/login.php", sf::Http::Request::Post);
 
    string login="sss";
    string haslo="zzzz";
 
    std::ostringstream stream;
    stream << "usrname=" << login << "&passwrd=" << haslo;
    request.setBody(stream.str());
 
     sf::Http http("http://darkwarez.pl/");
    sf::Http::Response response = http.sendRequest(request);
 
    // check the status
    if (response.getStatus() == sf::Http::Response::Ok)
    {
        // check the contents of the response
        std::cout << response.getBody() << std::endl;
    }
    else
    {
        std::cout << "Request failed. Result=" << response.getStatus() << " " << response.getField("Status") << std::endl;
        if (response.getBody().lenght()!=0) {
             std::cout << "Body:\n" << response.getBody() << std::endl;
        }
    }
 
    return 0;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 6x, ostatnio: MarekR22
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Gorlice
0

Ja tam się nie znam i się nie odzywam ale po mojemu należałoby wcześniej zrobić GET na stronę logowania bo tam jest zapisywane ciacho __cfduid, druga możliwa przyczyna nie ustawiony nagłówek Referer (niektóre strony to sprawdzają), trzecia przyczyna to że wysyłając dane logowania nie wysyłasz parametru login=Zaloguj a to też może być konieczne.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
Shalom
Też stawiałbym na jakiś CSRF token

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.