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

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

19.11.2017, 21:29. Показов 1599. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru