Помогите правильно передать UserAgent для html-парсера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Mihail_
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 31.03.2008 (Пн) 20:57

Помогите правильно передать UserAgent для html-парсера

Сообщение Mihail_ » 18.03.2009 (Ср) 18:03

Здравствуйте! Для получения html кода страницы использую функцию многоуважаемого Хакера!

Код: Выделить всё
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const scUserAgent = "VB Project"
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer






Public Function OpenURL(ByVal sUrl As String) As String
'получение html кода
    Dim hOpen As Long
    Dim hOpenUrl As Long
    Dim bDoLoop As Boolean
    Dim bRet As Boolean
    Dim sReadBuffer As String * 2048
    Dim lNumberOfBytesRead As Long
    Dim sBuffer As String
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
    bDoLoop = True
    While bDoLoop
    sReadBuffer = vbNullString
    bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
    sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
    If lNumberOfBytesRead = 0 Then bDoLoop = False
    Wend
    If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
    If hOpen <> 0 Then InternetCloseHandle (hOpen)
    OpenURL = sBuffer
End Function


Использую для парсинга кода kinopoisk.ru (оттуда впоследствии скачиваются постеры для фильмов)
Сначала, когда прога опознавалась как VB Project, ее не пускало, высвечивалась та же ошибка что и сейчас на скрине ниже (причем несмотня на то что вроде как мой ип заблокирован :), с обычного браузера все как работало так и работает), когда я указал в качестве UserAgen оперу "Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1" все заработало, но через пару дней опять ошибка.. и что я только не пробовал, какие только варианты браузеров не подставлял - не работает и все тут.. Причем с обычного браузера (опера) все работает замечательно, а вот парсеру выдается ошибка..

Изображение
Сам запрос выглядит так: "http://www.kinopoisk.ru/index.php?kp_query=" [тут название фильма] & "&x=0&y=0"

p.s. то что Referеr не отображается - все нормально, оно закрыто фаерволом для всех браузеров

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Помогите правильно передать UserAgent для html-парсера

Сообщение Хакер » 18.03.2009 (Ср) 19:14

функцию многоуважаемого Хакера!

Я свой код обычно узнаю. Многоуважаемых Хакер такую функцию не писал.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mihail_
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 31.03.2008 (Пн) 20:57

Re: Помогите правильно передать UserAgent для html-парсера

Сообщение Mihail_ » 19.03.2009 (Чт) 23:40

прошу прощения, оказывается это был HACKER с VBNET.ru :oops:
Но всеравно код очень хороший, однако как выяснилась нужна поддержка кукис.. там генерится куки PHPSESSID, которое нужно видимо при всех поисковых запросах передавать.. это реально?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 65

    TopList