W jaki sposób za pomocą cURLliba wysłać formularz?

0

Witam, w jaki sposób za pomocą cURLliba wysłać formularz?

Jak na razie wiem jak wypełnić pola, ale nie wiem jak wysłać formularz.

 
int main()
{
    string method_post = "login=tefro1995&password=mojehaslo";
    string url = "https://mojastrona.pl";

    curl_global_init(CURL_GLOBAL_ALL);
    CURL *curl = curl_easy_init();

    if(curl)
    {
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0");
        curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1 );
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1 );
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");

        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_perform(curl);

        curl_easy_setopt(curl, CURLOPT_REFERER, url.c_str());

        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, method_post.c_str());
        curl_easy_perform(curl);

        curl_easy_cleanup(curl);
    }
    return 0;
}

Jak sprawdzić czy kod działa i loguje się na stronie?

0

nie znam się na c++ to poczekaj na innych ludzi, ja tylko dodam, że w innym języku na luzie wysyłam dane do skryptu php i zawsze dodaję w CONTENT TYPE to -> application/x-www-form-urlencoded
i ty podałeś HTTPS, nie wiem, czy domyślnie samo za ciebie odwali szyfrowanie ssl, nie znam się. Pozdro

0

a czy kod działa to sprawdź na dowolnej stronie z netu, obczaj najpierw co odsyła strona np. czy istnieje "WYLOGUJ" w kodzie źródłowym strony to wtedy będziesz wiedział czy zalogowało (nie wiem co z cookies). Najprościej to zrób skrypt php prosty i wrzuć na darmowy hosting lub pobierz np. XAMPP http://pl.wikipedia.org/wiki/XAMPP i włącz go, włącz w nim jednym kliknięciem Apache i testuj wtedy skrypty php u siebie na kompie. (strony się wrzuca w jakimś katalogu xamppa, sprawdź w necie bo nie pamiętam)

0

Ten kod nie działa. Chce wpisać dane w dwa pola i następnie wysłać formularz.

0

Oto kodzik wyciągnięty z mojego programiku dla ciebie to jakis szkielecik tego co trzeba zrobić.
Trzeba tak:
1 połączyć się ze stroną i pobrać ją
2 odebrac i zapisać cookie
3 odpowiedzieć wysyając żądany formularz oraz zapisane wcześniej cookie

należy ominąć przy tym ssl :)

void SendFrm::SendPost()
{
    wxString f = GetArgv(0) + GetArgv(4);
    
    //static const char *pagefilename = "strona.txt";
    static const char *pagefilename = f;
    FILE *pagefile;
    
    
    CURL *curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if(curl) 
    {
        wxString Proxy = GetArgv(7).mb_str(); // to jest dziwne ale tylko jak tak podwójnie przepisze i zkonwertuje to działa :)
        
        curl_easy_setopt(curl, CURLOPT_PROXY, Proxy.mb_str() );
        
        // Set up a couple initial paramaters that we will not need to mofiy later.
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0");
        curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1 );
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1 );
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");

        curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "");
        curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1);

        // ominiecie CA
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        ///

        // Visit the login page once to obtain a PHPSESSID cookie
        wxString URL = GetArgv(2).mb_str();
        curl_easy_setopt(curl, CURLOPT_URL, URL.mb_str() ); //https://www.kinoman.tv/auth/login?return=affilate/points/   https://www.kinoman.tv/auth/login/
        curl_easy_perform( curl );
        
        curl_easy_setopt(curl, CURLOPT_PROXY, Proxy.mb_str() ); // ustawiem proxy jeszcze raz tak dla pewnosci

        // ominiecie CA
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        ///

        // Now, can actually login. First we forge the HTTP referer field, or HTS will deny the login
        curl_easy_setopt(curl, CURLOPT_REFERER, URL.mb_str() ); // ?return=affilate/points/
        // Next we tell LibCurl what HTTP POST data to submit

        wxString PostMessage = GetArgv(3).mb_str();  // to jest dziwne ale tylko jak tak podwójnie przepisze i zkonwertuje to działa :)
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS,  PostMessage.mb_str() );
        //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);

        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data_toFile);


        pagefile = fopen(pagefilename, "wb"); /* open the file */
        
        if (pagefile) 
        {
            curl_easy_setopt(curl, CURLOPT_FILE, pagefile); // write the page body to this file handle. CURLOPT_FILE is also known as

            /* Perform the request, res will get the return code */
            res = curl_easy_perform(curl);
        
            fclose(pagefile);
        }
    
    
        /* Check for errors */
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));

        /* always cleanup */
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup(); 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1