ciao a tutti, è successo a mezzanotte in punto . . stanotte
vediamo se avete qualche idea di cosa è successo e come si può rimediare
Ho fatto un banale programmino in Vb6 che legge le pagine di facebook di alcuni comici,
vip, politici . . sportivi famosi e prende il numero dei 'mi piace' ad intervalli di tempo
settabili da programma e poi mi disegna un grafico per sapere dove vanno i gusti del mondo
. . chi piace di più e chi di meno.
ecco l'esempio di una pagina che il mio codice va a leggere, e filtrando il codice html
mi va a trovare il valore numerico dei 'mi piace' aggiornato in quel momento.
https://www.facebook.com/pages/Mauri...57148&sk=likes
nel mio programma da oltre 1 anno usando questa subroutine tutto ha funzionato bene ma da stanotte
non funziona più
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256
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 hInternetSession As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lHeadersLength 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
' --------------------------
Sub GetURLSource(sUrl As String, fileSulPC As String)
Dim sBuffer As String * BUFFER_LEN
Dim sData As String
Dim lInternet As Long
Dim lSession As Long
Dim lReturn As Long
DoEvents
'prendo l'handle della connessione corrente
lSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
'prendo l'handle dell'URL
If lSession Then lInternet = InternetOpenUrl(lSession, sUrl, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
'se c'è l'handle dell'URL passo alla lettura della pagina
If lInternet Then
Call InternetReadFile(lInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sBuffer
Do While lReturn <> 0
Call InternetReadFile(lInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sData + Mid$(sBuffer, 1, lReturn)
Loop
End If
Call InternetCloseHandle(lInternet) 'chiudo l'URL
Call InternetCloseHandle(lSession)
Open fileSulPC For Binary As #9
Put #9, , sData
Close #9
End Sub
in particolare è questo rigo che mi crea problemi:
If lSession Then lInternet = InternetOpenUrl(lSession, sUrl, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
pur avendo un handle (lsession) valido e maggiore di ZERO . . il valore ritornato
da lInternet è SEMPRE ZERO se la sUrl è una pagina di facebook (tipo quella di Crozza indicata prima) . .
mentre invece se metto una pagina normale es. http://www.libero.it . . riesco ancora a leggerela
correttamente.
Sarà mica qualche tipo di protezione attivata stanotte da facebook sulle pagine https://
(è solo una mia idea) . . come potrei risolvere restando in Vb6?
. . grazie per gli eventuali consigli