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

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

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

Author24 — интернет-сервис помощи студентам
У меня вопрос по поводу запросов.
мне надо организовать авторизацию на 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)
Код
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
ввод данных в форму логина и отправка данных
Код
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)

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

Код
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
а вот переход на страницу в админке

Код
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2012, 09:29
Ответы с готовыми решениями:

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

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

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

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

4
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
09.10.2012, 12:36 2
Ну по сути ты начал правильно, ты просто наверное был невнимателен, когда организуешь авторизацию нужно тщательно смотреть заголовки(я использую 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 3
сам файл проекта
Вложения
Тип файла: rar Авторизация на wordpess.rar (101.3 Кб, 57 просмотров)
1
9 / 7 / 0
Регистрация: 09.08.2012
Сообщений: 79
09.10.2012, 23:19  [ТС] 4
Спасибо! но у меня все же вопрос.
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 5
никогда не задумывался, всегда так делаю, когда то и где то прочитал как работать с куками, там так написано было.
0
10.10.2012, 07:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2012, 07:12
Помогаю со студенческими работами здесь

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

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

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

Авторизация на сайте
Мне нужно написать авторизацию на сайте, но я не могу. Авторизация на сайте с помощью MySQL и PHP...

Авторизация на сайте
Приветствую. Есть форма, на ней 2 textBox-а и одна кнопка, 1 tb - Пользователь, 2 tb - пароль,...

Авторизация на сайте
Доброго времени суток, товарищи форумчане. Есть один сайт написанный на ASP.NET (если это важно)....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru