Показать сообщение отдельно
Старый 21.05.2010, 02:10   #7
Jordanbroun
AnyKey`щик
 
Регистрация: 21.05.2010
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как обьявить что то вроде коннекта со страницей, и получить оттуда скрипт?

;Может это поможет (В дебаге показываются Cookies)
OpenLibrary(1,"wininet.dll")
;{ декларация структур
Structure INTERNET_BUFFERS
StructSize.L
pNext.l
Header.L
HeadersLength.l
HeadersTotal.l
pBuffer.l ;[.b?]
BufferLength.l
BufferTotal.l
OffsetLow.l
OffsetHigh.l
EndStructure
;}

;{ инициализация буффера
Global bufin.INTERNET_BUFFERS
bufout.INTERNET_BUFFERS

dbusize=1024*100 ; buffer
dbuf=AllocateMemory(dbusize)

header=AllocateMemory(dbusize)

bufin\StructSize=SizeOf(INTERNET_BUFFERS)
bufin\Header=0
bufin\HeadersLength=0
bufin\HeadersTotal=0
bufin\pBuffer=dbuf
bufin\BufferLength=dbusize

bufin\BufferTotal=0

bufout\StructSize=SizeOf(INTERNET_BUFFERS)
;}

;{ Константы


#INTERNET_STATUS_RESOLVING_NAME = 10
#INTERNET_STATUS_NAME_RESOLVED = 11
#INTERNET_STATUS_CONNECTING_TO_SERVER = 20
#INTERNET_STATUS_CONNECTED_TO_SERVER = 21
#INTERNET_STATUS_SENDING_REQUEST = 30
#INTERNET_STATUS_REQUEST_SENT = 31
#INTERNET_STATUS_RECEIVING_RESPONSE = 40
#INTERNET_STATUS_RESPONSE_RECEIVED = 41
#INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42
#INTERNET_STATUS_PREFETCH = 43
#INTERNET_STATUS_CLOSING_CONNECTION = 50
#INTERNET_STATUS_CONNECTION_CLOSED = 51
#INTERNET_STATUS_HANDLE_CREATED = 60
#INTERNET_STATUS_HANDLE_CLOSING = 70
#INTERNET_STATUS_DETECTING_PROXY = 80
#INTERNET_STATUS_REQUEST_COMPLETE = 100
#INTERNET_STATUS_REDIRECT = 110
#INTERNET_STATUS_INTERMEDIATE_RESPONSE = 120
#INTERNET_STATUS_USER_INPUT_REQUIRED = 140
#INTERNET_STATUS_STATE_CHANGE = 200
#INTERNET_STATUS_COOKIE_SENT = 320
#INTERNET_STATUS_COOKIE_RECEIVED = 321
#INTERNET_STATUS_PRIVACY_IMPACTED = 324
#INTERNET_STATUS_P3P_HEADER = 235
#INTERNET_STATUS_P3P_POLICYREF = 326
#INTERNET_STATUS_COOKIE_HISTORY = 327


#HTTP_QUERY_COOKIE = 44
#HTTP_QUERY_FLAG_REQUEST_HEADERS = $80000000
#HTTP_QUERY_RAW_HEADER = 21
#HTTP_QUERY_RAW_HEADERS_CRLF = 22
#HTTP_QUERY_FLAG_COALESCE =$10000000

#INTERNET_OPTION_CONNECT_TIMEOUT =2 ;>
#INTERNET_OPTION_CONNECT_RETRIES =3 ;>
#INTERNET_OPTION_CONNECT_BACKOFF =4 ;>
#INTERNET_OPTION_SEND_TIMEOUT =5 ;>
#INTERNET_OPTION_RECEIVE_TIMEOUT =6 ;>
#INTERNET_OPTION_DATA_SEND_TIMEOUT =7 ;>
#INTERNET_OPTION_DATA_RECEIVE_TIMEOUT =8


#HSR_ASYNC = 1 ; // force async
#HSR_SYNC = 4 ; // force sync
#HSR_USE_CONTEXT = 8
#HSR_INITIATE = 8 ; // iterative operation (completed by HttpEndRequest)
#HSR_DOWNLOAD = 10 ; // download to file
#HSR_CHUNKED = 20 ; // operation is send of chunked data

;}


;{ callBack процедура
Procedure InternetStatusCallback(NETID,Context,InternetStatu s,PStatusInformation,StatusInformationLength)

Static R2, R1

CookieName.s=Space(256)
CookieData.s=Space(256)
Size=256

Static Dim Server.s(25)
Static Dim NeedGetCookieInResolveName(25)

Static n
n+1
; Debug n

Select InternetStatus

Case #INTERNET_STATUS_RESOLVING_NAME
Debug "<<#INTERNET_STATUS_RESOLVING_NAME"
Debug PeekS(PStatusInformation)

Case #INTERNET_STATUS_NAME_RESOLVED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "<<#INTERNET_STATUS_NAME_RESOLVED"
Debug PeekS(PStatusInformation)
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_CONNECTING_TO_SERVER
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_CONNECTING_TO_SERVER"
Debug PeekS(PStatusInformation)
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_CONNECTED_TO_SERVER
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_CONNECTED_TO_SERVER"
Debug PeekS(PStatusInformation)
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_SENDING_REQUEST
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_SENDING_REQUEST"
Debug "---------------------------------------------------------------------------------------------------------------------------"
BufferLength.l = 100000
Buffer.s=Space(BufferLength)
size = SizeOf(buffer);
SetLastError_(0 );
ret = HttpQueryInfo_(NETID,#HTTP_QUERY_RAW_HEADERS_CRLF | #HTTP_QUERY_FLAG_REQUEST_HEADERS, Buffer, @BufferLength, 0);
error = GetLastError_();

Debug Buffer
Debug " "
Debug " "

Case #INTERNET_STATUS_REQUEST_SENT
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_REQUEST_SENT"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "("+Str(PeekL(PStatusInformation))+" bytes sent)"
Debug " "
Debug " "

Case #INTERNET_STATUS_RECEIVING_RESPONSE
; Debug "---------------------------------------------------------------------------------------------------------------------------"
; Debug "#INTERNET_STATUS_RECEIVING_RESPONSE"
; Debug "---------------------------------------------------------------------------------------------------------------------------"
; Debug " "
; Debug " "

Case #INTERNET_STATUS_RESPONSE_RECEIVED
; Debug "---------------------------------------------------------------------------------------------------------------------------"
; Debug "<<#INTERNET_STATUS_RESPONSE_RECEIVED"
; Debug "---------------------------------------------------------------------------------------------------------------------------"

R1+PeekL(PStatusInformation)
If R1>R2+1024
Debug "Potok № "+Str(Context)
Debug "("+Str(R1)+")"+" bytes received)"
R2=R1
EndIf
; Debug " "
; Debug " "

Case #INTERNET_STATUS_CTL_RESPONSE_RECEIVED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "<<#INTERNET_STATUS_CTL_RESPONSE_RECEIVED"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_PREFETCH
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_PREFETCH"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_CLOSING_CONNECTION
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_CLOSING_CONNECTION"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_CONNECTION_CLOSED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_CONNECTION_CLOSED"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_HANDLE_CREATED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_HANDLE_CREATED"
Debug "---------------------------------------------------------------------------------------------------------------------------"

Debug PeekL(PStatusInformation)
Debug " "
Debug " "

Case #INTERNET_STATUS_HANDLE_CLOSING
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_HANDLE_CLOSING"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_DETECTING_PROXY
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_DETECTING_PROXY"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug PStatusInformation
Debug " "
Debug " "

Case #INTERNET_STATUS_REQUEST_COMPLETE
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_REQUEST_COMPLETE"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_REDIRECT
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "<><>#INTERNET_STATUS_REDIRECT"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug PeekS(PStatusInformation)
server(Context)=PeekS(PStatusInformation)
BufferLength1.l = 100000
Buffer1.s=Space(BufferLength1)

SetLastError_(0 );

ret = HttpQueryInfo_(NETID,22 , Buffer1, @BufferLength1, 0);
Debug Buffer1
Debug " "
Debug " "

Case #INTERNET_STATUS_INTERMEDIATE_RESPONSE
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_INTERMEDIATE_RESPONSE"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_USER_INPUT_REQUIRED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_USER_INPUT_REQUIRED"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_STATE_CHANGE
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_STATE_CHANGE"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_COOKIE_SENT
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_COOKIE_SENT"
Debug "---------------------------------------------------------------------------------------------------------------------------"

Debug server(Context)
Debug Str(PeekL(PStatusInformation))+" COOKIES sent"
Debug "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"

If InternetGetCookie_(server(Context),@CookieName,@Co okieData,@Size)
Debug CookieData
Debug "("+Str(Size)+" bytes)"
Else
NeedGetCookieInResolveName(Context)=1
EndIf
Debug " "
Debug " "

Case #INTERNET_STATUS_COOKIE_RECEIVED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug ">>#INTERNET_STATUS_COOKIE_RECEIVED"
Debug "---------------------------------------------------------------------------------------------------------------------------"

Debug Str(PeekL(PStatusInformation))+" COOKIES Received"
InternetGetCookie_(server(Context),@CookieName,@Co okieData,@Size)
Debug CookieData
Debug "("+Str(Size)+" bytes)"
Debug "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
Debug " "
Debug " "

Case #INTERNET_STATUS_PRIVACY_IMPACTED
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_PRIVACY_IMPACTED"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_P3P_HEADER
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_P3P_HEADER"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_P3P_POLICYREF
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_P3P_POLICYREF"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Case #INTERNET_STATUS_COOKIE_HISTORY
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "#INTERNET_STATUS_COOKIE_HISTORY"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug " "
Debug " "

Default
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug "?????S T A T U S not docunented??????????????????"
Debug "---------------------------------------------------------------------------------------------------------------------------"
Debug InternetStatus
Debug " "
Debug " "

EndSelect

; http://64.4.11.251/en-us/library/cc185684(VS.85).aspx

EndProcedure
;}


; Всё что ниже должно в идеале быть выполнено в потоке

potok=1 ; номер потока

server$="tut.by":netfile$=""
server$="yandex.ru":netfile$=""
server$="Google.com":netfile$=""

; useragent$="Opera"
;
; server$="purebasic.info"
; UserAgent$="JordanBroun1 Browser )"
; Referer$="http://purebasic.info/phpBB2/"
; netfile$="/phpBB2/viewforum.php?f=7"

; И т.п.

;{ заполняем запрос к серверу
method$="GET"
netfile$=""
protocol$="HTTP/1.1"
Referer$=""
Dim acept.s(10) ;
acept.s(0)="*/*" ; непонятно почему
; acept.s(1)="text/*"
; acept.s(2)="blabla/*"
;..
;acept.s(10)="blabla10/*"
;}




;{ инициализируем inet (NETID)
NETID=InternetOpen_(UserAgent$,0,"","",1)
Debug NETID
Debug "11111111111111111"
;}

TIMEOUT.L=5000 ;MS ; ЗНАЧЕНИЕ МОЖЕТ БЫТЬ ОТ 0 ДО FFFFFFFF(4294967295) , НО ТАКОВА ТИПА НЕТ В ПУРИКЕ
sTIMEOUT.L=SizeOf(TIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_CONNECT_ TIMEOUT,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_CONNECT_ RETRIES,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_CONNECT_ BACKOFF,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_SEND_TIM EOUT ,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_RECEIVE_ TIMEOUT,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_DATA_SEN D_TIMEOUT,@TIMEOUT,sTIMEOUT)
; Debug InternetSetOption_(NETID,#INTERNET_OPTION_DATA_REC EIVE_TIMEOUT,@TIMEOUT,sTIMEOUT)


;{устанавливаем callback процедуру
InternetSetStatusCallback_(NETID,@InternetStatusCa llback())
;}

;{ соединяемся с сервером
CONID= InternetConnect_(NETID,server$,0,0,0,3,#HSR_USE_CO NTEXT,potok)
Debug CONID
Debug "2222222222222222222"
;}







;{ создаём запрос REQ
; REQ= HttpOpenRequest_(CONID, method$, netfile$, protocol$, Referer$, @acept,#HSR_USE_CONTEXT,1)
REQ= CallFunction(1,"HttpOpenRequestA",CONID,@method$,@ netfile$,@protocol$,@Referer$,@acept(),#HSR_USE_CO NTEXT,potok)
Debug REQ
Debug 333333333333333
;}


;{ отсылаем запрос REQ на сервер
Debug CallFunction(1,"HttpSendRequestExA",REQ,0,0,#HSR_U SE_CONTEXT,1)
;}

;{ завершаем запрос REQ (почему-то так надо)
HttpEndRequest_(REQ,0,#HSR_USE_CONTEXT,potok)
;}

;{ создаём выходной буфер
DBUF=AllocateMemory(1024000)
;}

;{ читаем файл из инета
Repeat
InternetReadFileEx_(REQ,@bufin,#HSR_USE_CONTEXT,po tok)

If bufin\BufferLength>0
CopyMemory(bufin\pBuffer,DBUF+TOTAL,bufin\BufferLe ngth); копируем в выходной буфер
EndIf

TOTAL+bufin\BufferLength
Until bufin\BufferLength=0
;}


Debug "Total size= "+Str(TOTAL)+" bytes"

;{записываем в файл на компе
OpenFile(1,"D:\1.HTML")
WriteData(1,DBUF,TOTAL)
CloseFile(1)
;}
(Offline)
 
Ответить с цитированием