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

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

19.11.2017, 21:29. Показов 1583. Ответов 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
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
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,154
Записей в блоге: 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,154
Записей в блоге: 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,154
Записей в блоге: 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,154
Записей в блоге: 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,154
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru