Войти

Показать полную графическую версию : Программа на vb.net несколько вопросов.


Megatron13
06-10-2012, 22:14
Всем привет! У меня несколько вопросов.
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
итак, вобщем я подумал, и решил, что
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
итак, несколько вещей, которые мне до сих пор не понятны:
1) как бороться с низкой скоростью соединения? то есть чтобы поиск не начался до полной загрузки страницы.
2) как записать в переменную первую ссылку из списка, который находится в textbox, затем ссылку удалить?

Iska
07-10-2012, 19:36
1) как бороться с низкой скоростью соединения? то есть чтобы поиск не начался до полной загрузки страницы. »
WebBrowser.DocumentCompleted Event (System.Windows.Forms) (http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted.aspx)

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

Тут (http://bytes.com/topic/c-sharp/answers/586056-read-multiline-textbox-store-each-line-into-array-c) написаны решения проблемы, но это под c# + меня не покидает ощущения, что советчики тамошние не понимают что от них просят. Есть ли эквиваленты для того о чем они говорят в vb?

Iska
08-10-2012, 08:07
String.Split Method (System) (http://msdn.microsoft.com/en-us/library/system.string.split.aspx).

Megatron13
08-10-2012, 23:06
спасибо

Megatron13
09-10-2012, 02:33
еще такой вопрос по поводу запросов.
мне надо организовать авторизацию на 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%7Cff8428be8eda60c1c2b7cf8544 63e566


а вот переход на страницу в админке


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%7Cff8428be8eda60c1c2b7cf8544 63e566; wp-settings-time-1=1349734785

hamele0n26
27-10-2012, 18:53
вот пример того как реализовать авторизацию на вбhttp://ufahameleon.ru/allarti.aspx?id=88




© OSzone.net 2001-2012