С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32

Indy авторизация на WordPress

19.11.2017, 21:29. Показов 1555. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
пытаюсь авторизоваться на вордпресс с использованием indy

вот такой код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStringList* params = new TStringList;
  IdHTTP1->CookieManager= IdCookieManager1;
  IdHTTP1->AllowCookies= true;
 
   String Url = "http://www.maysait.ru/wp-login.php";
 
 params->Add("log=login");
 params->Add("pwd=password");
 
 
 IdHTTP1->Post(Url, params);
 
 
 delete params;
}
//---------------------------------------------------------------------------
компилируется без ошибок, приложение запускается, но когда жмакаеш кнопку, выскакивает окно с такой ошибкой "HTTP/1.1 405 Not Allowed."
работаю в C++Builder 10.1 Berlin
версия Indy 10.6.2.5341

Добавлено через 5 часов 9 минут
вот сам код php со страницы авторизации

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form name="loginform" id="loginform" action="http://maysait.ru/wp-login.php" method="post">
    <p>
        <label for="user_login">Имя пользователя<br />
        <input type="text" name="log" id="user_login" class="input" value="login" size="20" /></label>
    </p>
    <p>
        <label for="user_pass">Пароль<br />
        <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" /></label>
    </p>
        <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever"  /> Запомнить меня</label></p>
    <p class="submit">
        <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Войти" />
        <input type="hidden" name="redirect_to" value="http://maysait.ru/wp-admin/" />
        <input type="hidden" name="testcookie" value="1" />
    </p>
</form>
переписал сам код с++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStringList* params = new TStringList;
 
  IdHTTP1->AllowCookies= true;
  IdHTTP1->HandleRedirects = true;
 
 params->Add("log=login");
 params->Add("pwd=password");
 params->Add("rememberme=forever");
 params->Add("wp-submit=Войти");
 params->Add("redirect_to=http://maysait.ru/wp-admin/");
 params->Add("testcookie=1");
 
   Memo1->Text=IdHTTP1->Post("http://maysait.ru/wp-login.php", params);
 
 
 delete params;
}
//---------------------------------------------------------------------------
но ничего не поменялось, также компелирует без ошибок, приложение запускается, но нажимаеш кнопку и выскакивает окно с ошибкой "HTTP/1.1 405 Not Allowed."
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2017, 21:29
Ответы с готовыми решениями:

Авторизация на сайте indy
Не могу авторизоваться на сайте. Вот ссылка на авторизацию: ...

Авторизация Vk (Indy)
Здравствуйте, я знаю что существует уже много похожих тем, но не могла бы вы кинуть лёгкий, хороший пример авторизации ВК с помощью Indy,...

Indy авторизация на сайте
Всем привет! Понимаю что тема за юзана но все таки не могу найти решение проблемы Пытаюсь получить авторизацию на одном сайте,...

13
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
19.11.2017, 22:33
Входи на сайт через браузер и анализируй с помощью, например, HTTP Analyzer переданные и полученные данные. Потом воспроизводи всё в своей программе.
А код со страницы авторизации больше нужен, если ты реализуешь передачу данных через компонент (Cpp)WebBrowser.
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
20.11.2017, 17:29  [ТС]
установил HTTP Analyzer

вот что передаёт при авторизации в браузере

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /wp-login.php HTTP/1.1
Host: maysait.ru
Connection: keep-alive
Content-Length: 132
Cache-Control: max-age=0
Origin: http://maysait.ru
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://maysait.ru/wp-login.php?redirect_to=http%3A%2F%2Fmaysait.ru%2Fwp-admin%2F&reauth=1
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: _ym_uid=1502112284467182284; beget=begetok; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26mfold%3Do%26advImgDetails%3Dshow%26wplink%3D1%26posts_list_mode%3Dlist%26urlbutton%3Dfile%26wpfb_adv_uploader%3D1%26hidetb%3D1%26align%3Dcenter; wp-settings-time-1=1502187717; intercom-id-r70azrgx=269736fe-0e2d-48de-b6bf-7936f1a0fe09; PHPSESSID=79f935f75dec14efe6b9a8ef4796346e; wordpress_test_cookie=WP+Cookie+check
 
log=login&pwd=password&wp-submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&redirect_to=http%3A%2F%2Fmaysait.ru%2Fwp-admin%2F&testcookie=1
а вот это программа

C++
1
2
3
4
5
6
7
8
9
POST /wp-login.php HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 132
Host: maysait.ru
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/3.0 (compatible; Indy Library)
 
log=login&pwd=pasword&wp-submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&redirect_to=http%3A%2F%2Fmaysait.ru%2Fwp-admin%2F&testcookie=1
и что ттеперь с этим делать?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.11.2017, 17:44
Доброго!
Для чего нужна авторизация, что Вы через нее хотите сделать? Если менять и корректировать файлы, то вам нужна не авторизация, а FTP. Если у Вас противный случай, то я даже не представляю как Вы будете что то админить через TIdHTTP (это конечно можно, если если Вы очень усидчевый человек и готовы потратить кучу времени для работы с API).
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
20.11.2017, 22:58  [ТС]
авторизация нужна для того что бы скачать картинки с сайта (сайт принадлежит мне) из защищённого раздела, где загрузки будут доступны только зарегистрированным пользователям, саму загрузку картинок обсудили и сделали тут Ссылка на интернет адрес
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.11.2017, 23:07
Используйте FTP, самое простое и эффективное решение для работы с файлами дистанционно.
Для этого Вам необходимо посмотреть настройки FTP соединения от вашего хостера...накидать пару строчек для подключения.
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
20.11.2017, 23:08  [ТС]
а можно какой нибудь пример, чтоб хоть понять от чего отталкиваться
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.11.2017, 23:21
1) берете настрой FTP вашего хостера
2) Кидайте на форму TIdFTP
3) На кнопку делаем след код (как пример, залить файл на сайт) :
C++
1
2
3
4
5
6
7
8
9
         IdFTP1->Passive=true;
         IdFTP1->TransferType= ftBinary;
         IdFTP1->Host="my_site.ru";//Ваш домен куда заливаете
         IdFTP1->Port=21;
         IdFTP1->Username="******"; //Логин и пароль от вашего FTP...не путать с данными для авторизации
         IdFTP1->Password="*******";
         IdFTP1->Connect();
         IdFTP1->Put(MS,"так будет называться мой файл на сайте",false); //MS это файл стрим, в него помещен файл,что отправляем
         IdFTP1->Disconnect();
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
20.11.2017, 23:27  [ТС]
я так понимаю что здесь не имеет значения как зарегистрирован пользователь, поскольку будет скачиватся через учётную запись администратора, но это совсем не подходит, поскольку у каждого пользователя свои права на скачивание, комуто можно это скачать, а комуто нет, поэтому наверно и нужна авторизация, как я думаю.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.11.2017, 23:38
Цитата Сообщение от hiypman Посмотреть сообщение
поскольку у каждого пользователя свои права на скачивание

Ну я даже не знаю что Вам сказать,..сказать читайте и изучайте фундамент...но Вы не будите же...а объяснять ...Вы даже не читаете, что в примере Вам в комментах написал, тогда бы не было глуппых вопросов, типа
Цитата Сообщение от hiypman Посмотреть сообщение
поскольку будет скачиватся через учётную запись администратора,
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
21.11.2017, 00:21  [ТС]
C++
1
Username="******"; //Логин и пароль от вашего FTP...не путать с данными для авторизации
Ну как же не читаю, получается что любой пользователь программы, не зависимо от того зарегистрирован он на сайте или нет, может скачать файл, поскольку используются логин и пароль мои для доступа фтп, а не пользователя.
А литературы и форумов по с++ я уже прочитал столько, сколько за всё школу не читал, но многое понять без объяснения и примеров просто не возможно, поэтому и прошу помощи, чтоб как учитель ученику втолдонил.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
21.11.2017, 08:19
Цитата Сообщение от hiypman Посмотреть сообщение
Ну как же не читаю, получается что любой пользователь программы, не зависимо от того зарегистрирован он на сайте или нет, может скачать файл, поскольку используются логин и пароль мои для доступа фтп, а не пользователя.
Нет, FTP как раз и создан для работы с файлами и разграничением доступа к ним по правам учеткам пользователей. То есть задается учетка и определяется что под этой учеткой можно сделать. А уж кому какие права раздавать Вам решать.

PS, если Вам необходимо разграничение прав и доступов, то я даже не представляю как Вы это хотели сделать изначально, только при помощи авторизации на сайте.
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
24.11.2017, 15:44  [ТС]
написал так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TStringList* post = new TStringList;
 
  IdHTTP1->CookieManager= IdCookieManager1;
  IdHTTP1->AllowCookies= true;
  IdHTTP1->HandleRedirects = true;
 
 IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";
 IdHTTP1->Request->UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
 
 post->Add("log="+Edit2->Text);
 post->Add("pwd="+Edit3->Text);
 post->Add("rememberme=forever");
 post->Add("wp-submit=Войти");
 post->Add("redirect_to="+Edit1->Text+"/wp-admin/");
 post->Add("testcookie=1");
 
   Memo1->Text=IdHTTP1->Post(Edit1->Text+"/wp-login.php", post);
 
 
}
//---------------------------------------------------------------------------
как бы уже точно должно работать , но также выскакивает ошибка "HTTP/1.1 405 Not Allowed."

может эта ошибка получатся из-за того что в пост запросе с сайта идёт

PHP
1
POST /wp-login.php HTTP/1.1
а из программы идёт

PHP
1
POST /wp-login.php HTTP/1.0
версия HTTP разные


выкладываю проэкт C++Builder 10, может кто попробует, там же есть ехе
если нет вордпресса на котором проверить, в личку дам свой
login wp.zip
0
3 / 0 / 0
Регистрация: 23.05.2017
Сообщений: 32
27.11.2017, 20:13  [ТС]
побороть ошибку 401 всётаки получилось, но теперь другая проблема, не посылаются куки, я так понял что CookieManager не очень работает, надо както прописывать вручную, попробовал взять с этой темы https://www.cyberforum.ru/post235829.html
но при компиляции ошыбка по этой строчке

C++
1
Form1->IdHTTP1->CookieManager->AddCookie(Temp->Strings[i], Form1->IdHTTP1->Request->Host);
[bcc32 Error] Unit1.cpp(24): E2316 'AddCookie' is not a member of 'TIdCookieManager'
Full parser context
Unit1.cpp(18): parsing: void SetCookies()

Добавлено через 50 минут
код ответа 200 OK
а должно быть 302

и вкладка Cookies в Http Analyzer V7 пустая
а должно быть (как при входе через браузер)
_ym_uid:1502112284467182284
beget:begetok
wp-settings-1:editor=tinymce&libraryContent=browse&m fold=o&advImgDetails=show&wplink=1&posts _list_mode=list&urlbutton=file&wpfb_adv_ uploader=1&hidetb=1&align=center
wp-settings-time-1:1502187717
intercom-id-r70azrgx:269736fe-0e2d-48de-b6bf-7936f1a0fe09
PHPSESSID:d2f2adeee72e48464a5368da76ad58 bc
wordpress_test_cookie:WP Cookie check
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2017, 20:13
Помогаю со студенческими работами здесь

Indy 10 в контакте авторизация
Здравствуйте. Довольно-таки долго ломаю голову как авторизоваться вконтакте использую indy. Использую idhttp и IdCookieManager ...

Авторизация на Delphi7+Indy+HTTPS
Привет. Набросал код для авторизации на одном сайте. Но она не проходит. Использую Delphi7, Indy, нужные библиотеки ssl в папке с...

[Indy] Авторизация и ошибка Unknown protocol
В чем проблема? Вроде все правильно. procedure TForm2.Button1Click(Sender: TObject); var data, str:TStringList; ...

Delphi XE7 INDY https IDHTTP авторизация win7 win8
Привет Всем. Написал приложение рассылки смс Использовал INDY idhttp и библиотеки ssl Прикол в том что на моем компе все...

Авторизация WordPress
Здравствуйте. Возник вопрос про авторизацию, а именно про cookies. Не получается получить сессионные куки. Пробовал через request.session...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru