Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Программа на vb.net несколько вопросов. (http://forum.oszone.net/showthread.php?t=244082)

Megatron13 06-10-2012 22:14 2000618

Программа на vb.net несколько вопросов.
 
Всем привет! У меня несколько вопросов.
1) каким образом можно заливать файлы через форму для залива файлов. например в такую

Код HTML
1
2
3
4
Код:

<input class="input" name="uploadfile" value="" type="file">
<input class="bt" name="doupfile" value="Upload" type="submit">
<input name="uploaddir" value="/home/тут_был_путь" type="hidden">
<input name="dir" value="/home/тут_был_путь" type="hidden">

2) каким образом можно осуществлять поиск по странице?
3) не все сервера обладают хорошим каналом. с некоторых страницу приходится ждать секунд по 15 а то и 30. это никак не повлияет на работу программы, суть которой ходить по ссылкам да вводить значения в формы? если как-то повлияет, то как устранить влияние?
4) соединю вопросы 2 и 3: страница может загружаться медленно, но поиск в этот момент то уже начнется! как сделать так, чтобы поиск был только после загрузки страницы?
5) результатом работы программы будет появление страницы с 1 единственным полем и кнопкой login. но часто бывает так, что из-за некоторых особенностей на странице появляются ошибки, которых не должно быть иначе созданный скрипт будет не правильно работать. для этого исправления нужно сделать некоторые действия. так вот, как распознать есть ли эти ошибки на странице или нет, ошибки разные поэтому лучше всего получается проверять нет ли на странице чего-то еще кроме формы ввода. как это сделать?
6) как заставить webbrowser переходить по первой ссылке указанной в поле ввода (поле ввода, которое в самой программе, textbox), где ссылки разделены enter'ом, а после перехода ссылку стирать?
7) как ввести в форму (ту что на сайте) значение из файла на компьютере, где программа запущена?

Megatron13 07-10-2012 17:45 2000926

итак, вобщем я подумал, и решил, что
1) надо снифать запрос, который я делаю для закачки файла, а затем его пограмно посылать.
2) осуществлять поиск по странице можно закинув ее исходник в string переменную
Код:

Web.Browser1.Navigate(TextBox1.Text)
str = WebBrowser1.Document.Body.InnerHtml

а затем там уже Instr() делать.
Код:

If InStr(1, str, "kekeke") <> 0 Then
Если instr<>0 то, значит то что мне надо на странице есть, а мне нужен ответ только есть или нет.
3) пока не знаю что делать
4) опять же пока не знаю
5) все ошибки начинаются как правило со слова error, т.е. можно опять же закинуть исходник в переменную и там поискать
6) не знаю вот пока.
7) опять же, похоже тут придется сниффать запрос, а потом его программно посылать.

Megatron13 07-10-2012 18:03 2000934

итак, несколько вещей, которые мне до сих пор не понятны:
1) как бороться с низкой скоростью соединения? то есть чтобы поиск не начался до полной загрузки страницы.
2) как записать в переменную первую ссылку из списка, который находится в textbox, затем ссылку удалить?

Iska 07-10-2012 19:36 2001006

Цитата:

Цитата Megatron13
1) как бороться с низкой скоростью соединения? то есть чтобы поиск не начался до полной загрузки страницы. »

WebBrowser.DocumentCompleted Event (System.Windows.Forms)

Megatron13 08-10-2012 07:25 2001194

Ок спасибо. теперь остался мой 2ой вопрос. Впринципе мне не важно чтобы все выглядело именно вот так как я написал. По сути мне нужно загнать в обработку список урлов. Каждый урл с новой строки.
Может есть какой способ взять из multiline texbox или из файла строки и например запихать их в массив, где элементы массива - строки, или еще что-то подобное?

Тут написаны решения проблемы, но это под c# + меня не покидает ощущения, что советчики тамошние не понимают что от них просят. Есть ли эквиваленты для того о чем они говорят в vb?

Iska 08-10-2012 08:07 2001201

String.Split Method (System).

Megatron13 08-10-2012 23:06 2001714

спасибо

Megatron13 09-10-2012 02:33 2001806

еще такой вопрос по поводу запросов.
мне надо организовать авторизацию на wordpress-сайте.
вот что я начал писать
Код:

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 и дает новые куки.
Код:

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


hamele0n26 27-10-2012 18:53 2013342

вот пример того как реализовать авторизацию на вбhttp://ufahameleon.ru/allarti.aspx?id=88


Время: 17:28.

Время: 17:28.
© OSzone.net 2001-