Авторизация в Xenforo | Xenforo auth\login

Забаненный
Статус
Оффлайн
Регистрация
28 Окт 2018
Сообщения
139
Реакции[?]
47
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Решил немного отвлечься от ареха и говнокс и написать простой гайд,ибо наблюдал много случаев,когда требовался лоадер с авторизацией xenforo.

Итак,нам нужны :
- curl (
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
- boost (
Пожалуйста, авторизуйтесь для просмотра ссылки.
)


Т.к. обычный способ get запроса и получение ответа здесь не канает,то мы будем посылать post запрос и получать response_code

Пишем строку того,что мы будем отсылать:
Код:
    string req = ("login=") + out_name + ("&register=0&password=") + out_pass + OBFUSCATED("&remember=0&cookie_check=0&redirect=/&_xfToken=");
- out_name и out_pass - логин и пароль от форума соответственно.

Далее делаем настройку и подключение :
Код:
static char errorBuffer[CURL_ERROR_SIZE];
                        static string buffers;
                        CURL *curl = nullptr;
                        CURLcode result;
                        curl = curl_easy_init();


                        if (curl)
                        {
                            string req = ("login=") + out_name + ("&register=0&password=") + out_pass + OBFUSCATED("&remember=0&cookie_check=0&redirect=/&_xfToken=");
                            curl_easy_setopt(curl, CURLOPT_USERAGENT, ("xen_load"));
                            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
                            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffers);
                            curl_easy_setopt(curl, CURLOPT_URL, ("http://yoursite.ru/login/login/"));
                            curl_easy_setopt(curl, CURLOPT_HEADER, 0);
                            curl_easy_setopt(curl, CURLOPT_POST, 1);
                            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, req.c_str());
                       
                            result = curl_easy_perform(curl);
               
                            long response_code = 0;
                            curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);

                            if (result == CURLE_OK)
                            {
                            }
                        }
                        curl_easy_cleanup(curl);

                    }
Код Writers :
Код:
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
    int result = 0;
    if (buffer != NULL)
    {
        buffer->append(data, size * nmemb);
        result = size * nmemb;
    }
    return result;
}
Итак,когда у нас прошел ответ делаем простенькую проверку на response_code :
Код:
    auto resp = to_string(response_code);
                               
                                if (resp == "303") {
                                //good
                                }else{//bad}
Пример работоспособности :
На этом,собственно все.
Полный листинг :
Код:
    static char errorBuffer[CURL_ERROR_SIZE];
                        static string buffers;
                        CURL *curl = nullptr;
                        CURLcode result;
                        curl = curl_easy_init();


                        if (curl)
                        {
                            string req = ("login=") + out_name + ("&register=0&password=") + out_pass + OBFUSCATED("&remember=0&cookie_check=0&redirect=/&_xfToken=");
                            curl_easy_setopt(curl, CURLOPT_USERAGENT, ("xen_load"));
                            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
                            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffers);
                            curl_easy_setopt(curl, CURLOPT_URL, ("http://yoursite.ru/login/login/"));
                            curl_easy_setopt(curl, CURLOPT_HEADER, 0);
                            curl_easy_setopt(curl, CURLOPT_POST, 1);
                            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, req.c_str());
                       
                            result = curl_easy_perform(curl);
               
                            long response_code = 0;
                            curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);

                            if (result == CURLE_OK)
                            {
                                auto resp = to_string(response_code);
                               
                                if (resp == "303") {
                                //good auth
                                }
                                else {
                                    //bad auth
                                }
                            }
                        }
                        curl_easy_cleanup(curl);

                    }
 
Последнее редактирование:
Сверху Снизу