Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
9 / 7 / 0
Регистрация: 09.08.2012
Сообщений: 79
.NET 4.x

Авторизация на сайте на wordpress

09.10.2012, 09:29. Показов 2908. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вопрос по поводу запросов.
мне надо организовать авторизацию на wordpress-сайте.
вот что я начал писать
VB.NET
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
40
41
42
43
44
45
Imports System.Net
Imports System.Text
 
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myHttpWebRequest As HttpWebRequest = HttpWebRequest.Create("http://megatron13.winterhost.org/wp-login.php/")
        myHttpWebRequest.Proxy = New WebProxy
        myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;"
        myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
        myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip,deflate,sdch")
        myHttpWebRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3")
        Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
        Dim myStream = myHttpWebResponse.GetResponseStream
        Dim sCookies As String = ""
        If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Cookie")) Then
            sCookies = myHttpWebResponse.Headers("Cookie")
        End If
 
        myHttpWebRequest.Proxy = New WebProxy("127.0.0.1", 8888)
        myHttpWebRequest.Method = "POST"
        myHttpWebRequest.Referer = "http://megatron13.winterhost.org/wp-login.php"
        myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;"
        myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
        myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip,deflate,sdch")
        myHttpWebRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3")
        If Not String.IsNullOrEmpty(sCookies) Then
            myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookies)
        End If
        myHttpWebRequest.AllowAutoRedirect = False
        Dim sQueryString As String = "log=admin&pwd=[тут был пароль]&wp-submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&redirect_to=http%3A%2F%2Fmegatron13.winterhost.org%2Fwp-admin%2F&testcookie=1"
        Dim ByteArr As Byte() = Encoding.GetEncoding(1251).GetBytes(sQueryString)
        myHttpWebRequest.ContentLength = ByteArr.Length()
        myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length)
        myHttpWebResponse = myHttpWebRequest.GetResponse()
'и вот тут я запнулся
    End Sub
End Class
причина запинки в том, что я не совсем понимаю кое-что. вот я послал запрос. жду ответ. что писать дальше? если что, дальше меня перекидывает на wp-admin и дает новые куки.
VB.NET
1
2
3
4
sCookies = ""
If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Cookie")) Then
  sCookies = myHttpWebResponse.Headers("Cookie")
End If
вот это?
или что?
просто все, что мне сейчас надо это авторизоваться и перейти на страницу в админке.
p.s.
вот как выглядит общение моего компа с сервером при авторизации и переходе на другую страницу после входа.

заход на wp-login.php (мне это нужно для того, чтобы правильно послать следующий запрос, сейчас поймете почему, а еще мне выдают wp-settings-time-1)
Code
1
2
3
4
5
6
7
8
9
GET /wp-login.php HTTP/1.1
Host: megatron13.winterhost.org
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: wp-settings-time-1=1349724503; wordpress_test_cookie=WP+Cookie+check
ввод данных в форму логина и отправка данных
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /wp-login.php HTTP/1.1
Host: megatron13.winterhost.org
Connection: keep-alive
Content-Length: 141
Cache-Control: max-age=0
Origin: http://megatron13.winterhost.org
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://megatron13.winterhost.org/wp-login.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: wp-settings-time-1=1349724503; wordpress_test_cookie=WP+Cookie+check
 
log=admin&pwd=[тут был пароль]&wp-submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&redirect_to=http%3A%2F%2Fmegatron13.winterhost.org%2Fwp-admin%2F&testcookie=1
вот для чего нужен был заход на wp-login.php. в wp-submit= закодировано слово "Войти". Когда я захожу на wp-login.php я ищу (как я не написал, т.к. фрагмент поиска по маске довольно большой да и не важен он тут) значение параметра value= где написано либо "Войти" либо "Login" либо еще на каком-то языке, а мне нужна универсальность, т.е. я ищу значение параметра value(опять же говорю, что не знаю пока как буду искать), затем беру значение, заталкиваю его в строковую переменную, затем System.Web.HttpUtility.UrlEncode() эту переменную, а получившееся вставляю в wp-submit)

а вот уже админка

Code
1
2
3
4
5
6
7
8
9
10
11
GET /wp-admin/ HTTP/1.1
Host: megatron13.winterhost.org
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://megatron13.winterhost.org/wp-login.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: wordpress_2e51bbe11ca7be4426f471d229b9b493=admin%7C1349907584%7C12d0342c040f4132aa0fd51493606a68; wp-settings-time-1=1349724503; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_2e51bbe11ca7be4426f471d229b9b493=admin%7C1349907584%7Cff8428be8eda60c1c2b7cf854463e566
а вот переход на страницу в админке

Code
1
2
3
4
5
6
7
8
9
10
GET /wp-admin/plugins.php HTTP/1.1
Host: megatron13.winterhost.org
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://megatron13.winterhost.org/wp-admin/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: wordpress_2e51bbe11ca7be4426f471d229b9b493=admin%7C1349907584%7C12d0342c040f4132aa0fd51493606a68; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_2e51bbe11ca7be4426f471d229b9b493=admin%7C1349907584%7Cff8428be8eda60c1c2b7cf854463e566; wp-settings-time-1=1349734785
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2012, 09:29
Ответы с готовыми решениями:

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

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

Авторизация в WordPress (synapse)
Пытаюсь авторизоваться в WordPress блоге. Но не получается. Пост запрос проходит нормально. А вот получить год страницы, на которую идёт...

4
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
09.10.2012, 12:36
Ну по сути ты начал правильно, ты просто наверное был невнимателен, когда организуешь авторизацию нужно тщательно смотреть заголовки(я использую livehttpheaders для мозилы). Бывает каждая мелочь важна, например пробел не поставил или запятую.
вот я тебе набросал код, который позволяет авторизоваться и переходит на страницу "Записи"(/wp-admin/edit.php).
VB.NET
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
        Dim myLogin As String = txtLogin.Text
        Dim myPass As String = txtPass.Text
        Dim myUrl As String = "http://soft.dunlom.ru"
 
        Dim myHttpWebRequest As HttpWebRequest
        Dim myHttpWebResponse As HttpWebResponse
 
        Dim sCookies As String = "wordpress_test_cookie=WP+Cookie+check"
 
        myHttpWebRequest = HttpWebRequest.Create(myUrl & "/wp-login.php")
        myHttpWebRequest.Method = "POST"
        myHttpWebRequest.Referer = myUrl & "/wp-admin"
        myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1"
        myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        myHttpWebRequest.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"
        If Not String.IsNullOrEmpty(sCookies) Then
            myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookies)
        End If
        myHttpWebRequest.AllowAutoRedirect = False
        Dim sQueryString As String = "log=" & myLogin & "&pwd=" & myPass
        Dim ByteArr As Byte() = Encoding.GetEncoding(1251).GetBytes(sQueryString)
        myHttpWebRequest.ContentLength = ByteArr.Length()
        myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length)
        myHttpWebResponse = myHttpWebRequest.GetResponse()
        Dim myStreamReader As New StreamReader(myHttpWebResponse.GetResponseStream, Encoding.GetEncoding(65001))
        sCookies = ""
        If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Set-Cookie")) Then
            sCookies = myHttpWebResponse.Headers("Set-Cookie")
        End If
 
        Dim wtc As String = "" 'wordpress_test_cookie
        Dim wp As String = "" 'wordpress_
        Dim wli As String = "" 'wordpress_logged_in
 
        For i = 1 To sCookies.Length
            If Mid$(sCookies, i, 22) = "wordpress_test_cookie=" Then
                For j = i + 22 To sCookies.Length
                    If Mid$(sCookies, j, 1) = ";" Or j = sCookies.Length Or Mid$(sCookies, j, 1) = "," Then
                        wtc = Mid$(sCookies, i, j - i) '& ";"
                        Exit For
                    End If
                Next j
            End If
            If Mid$(sCookies, i, 10) = "wordpress_" And Mid$(sCookies, i, 11) <> "wordpress_l" Then
                For j = i + 10 To sCookies.Length
                    If Mid$(sCookies, j, 1) = ";" Or j = sCookies.Length Or Mid$(sCookies, j, 1) = "," Then
                        wp = Mid$(sCookies, i, j - i) & "; "
                        Exit For
                    End If
                Next j
            End If
            If Mid$(sCookies, i, 19) = "wordpress_logged_in" Then
                For j = i + 19 To sCookies.Length
                    If Mid$(sCookies, j, 1) = ";" Or j = sCookies.Length Or Mid$(sCookies, j, 1) = "," Then
                        wli = Mid$(sCookies, i, j - i) & "; "
                        Exit For
                    End If
                Next j
            End If
        Next i
 
        sCookies = wp & wli & wtc
 
 
        Dim wps As String = "" 'wp-settings-time-1
        myHttpWebRequest = HttpWebRequest.Create(myUrl & "/wp-admin/")
        myHttpWebRequest.Method = "GET"
        myHttpWebRequest.Referer = myUrl & "/wp-login.php"
        myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1"
        myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        myHttpWebRequest.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
        If Not String.IsNullOrEmpty(sCookies) Then
            myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookies)
        End If
        myHttpWebRequest.AllowAutoRedirect = False
        myHttpWebResponse = myHttpWebRequest.GetResponse()
        If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Set-Cookie")) Then
            wps = myHttpWebResponse.Headers("Set-Cookie")
        End If
        Dim myStreamReader1 As New StreamReader(myHttpWebResponse.GetResponseStream, Encoding.GetEncoding(65001))
 
        For i = 1 To wps.Length
            If Mid$(wps, i, 19) = "wp-settings-time-1=" Then
                For j = i + 19 To wps.Length
                    If Mid$(wps, j, 1) = ";" Or Mid$(wps, j, 1) = ";" Or j = wps.Length Then
                        wps = Mid$(wps, i, j - i)
                        Exit For
                    End If
                Next j
            End If
        Next
 
        sCookies = sCookies & "; " & wps
        myHttpWebRequest = HttpWebRequest.Create(myUrl & "/wp-admin/edit.php")
        myHttpWebRequest.Method = "GET"
        myHttpWebRequest.Referer = myUrl & "/wp-admin.php"
        myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1"
        myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        myHttpWebRequest.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
        If Not String.IsNullOrEmpty(sCookies) Then
            myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookies)
        End If
        myHttpWebRequest.AllowAutoRedirect = False
        myHttpWebResponse = myHttpWebRequest.GetResponse()
        If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Set-Cookie")) Then
            wps = myHttpWebResponse.Headers("Set-Cookie")
        End If
        myStreamReader1 = New StreamReader(myHttpWebResponse.GetResponseStream, Encoding.GetEncoding(65001))
 
        Dim txt As String = myHttpWebResponse.StatusCode & vbCrLf
        txt += myHttpWebResponse.Headers.ToString & vbCrLf & vbCrLf & vbCrLf & vbCrLf
        txt += myStreamReader1.ReadToEnd
 
 
        TextBox1.Text += txt
В дальнейшем если тебе нужно перейти на другую страницу отправляй куки(sCookies), только больше не принимай куки, с этим куки ты так и будешь в дальнейшем работать.

Обрати внимание что я в ручную собираю куки, т.к куки передаваемые "чистые" без всякого "мусора"
1
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
09.10.2012, 12:46
сам файл проекта
Вложения
Тип файла: rar Авторизация на wordpess.rar (101.3 Кб, 57 просмотров)
1
9 / 7 / 0
Регистрация: 09.08.2012
Сообщений: 79
09.10.2012, 23:19  [ТС]
Спасибо! но у меня все же вопрос.
VB.NET
1
2
If Not String.IsNullOrEmpty(myHttpWebResponse.Headers("Set-Cookie")) Then
            sCookies = myHttpWebResponse.Headers("Set-Cookie")
почему Set-Cookie?
В запросе (тот что я сниффал вручную) же просто Cookie было?
0
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
10.10.2012, 07:12
никогда не задумывался, всегда так делаю, когда то и где то прочитал как работать с куками, там так написано было.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2012, 07:12
Помогаю со студенческими работами здесь

Авторизация на wordpress не работает!
Почему на wordpress, когда я уже вошел в консоль и пытаюсь выйти, меня спрашивают логин и пароль? И когда я ввожу их, я все равно не могу...

Indy авторизация на WordPress
Здравствуйте, пытаюсь авторизоваться на вордпресс с использованием indy вот такой код ...

Вирусы на сайте Wordpress
Доброго времени суток уважаемые форумчане! Являюсь владельцем сайта на движке WordPress. В последнее время начались проблемы с вирусом или...

вирус на сайте Wordpress
здравствуйте помогите, пожалуйста, в поиске вируса на сайте. есть сайт http://fusomoscow.ru при переходе на него осуществляется...

Авторизация на сайте
Мне нужно написать авторизацию на сайте, но я не могу. Авторизация на сайте с помощью MySQL и PHP Нашла в инете как это делается:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru