- Код: Выделить всё
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 не отображается - все нормально, оно закрыто фаерволом для всех браузеров