Automatice las descargas de imágenes del sitio web con autenticación, segunda parte

Esta pregunta se deriva de esta otra pregunta:Automatice las descargas de imágenes del sitio web con autenticación donde pregunté cómo descargar una imagen de un sitio web específico que requiere un inicio de sesión.

Hay dos sitios web de la misma compañía,cgwallpapers.com ygamewallpapers.com, ya que con la ayuda del usuario que respondió la otra pregunta, finalmente logré cómo automatizar la descarga de uno de los sitios web, no puedo reproducir los mismos pasos engamewallpapers.com sitio web.

Tal vez pueda estar equivocado con las cosas que voy a decir debido a mi inexperiencia en las solicitudes, así que si un ayudante / experto tiene tiempo, realmente sugiero verificar que los parámetros y otras cosas que voy a decir son como Estoy diciendo o no, como digo, puedo estar equivocado.

En cgwallpapers.com, básicamente configuré la consulta de esta manera para descargar un fondo de pantalla:

http://www.cgmewallpapers.com/members/getwallpaper.php?id=100&res=1920x1080

Pero descubrí que en gamewallpapers.com no puedo usar los mismos datos de publicación porque parece ser así:

http://www.gamewallpapers.com/members/getwallpaper.php?wallpaper=wallpaper_ancient_space_01_1920x1080.jpg&keystr=1423106012&retry=

En cgwallpapers es más fácil porque solo puedo usar un bucle incremental para los identificadores con la resolución de fondo de pantalla específica, pero con el sitio gamewallpapers.com no puedo entender cómo puedo automatizar las descargas de fondos de pantalla, parece necesitar un tratamiento totalmente diferente si no me equivoco.

Por lo tanto, no sé qué probar ni siquiera cómo hacerlo.

Después de iniciar sesión en gamewallpapers.com, esta es la forma en que intento descargar un fondo de pantalla, por supuesto, esto no funciona porque no estoy usando la consulta adecuada, pero este código funcionó para el sitio cgwallpaper.com, así que ' mostraré si puede ayudar para algo:

NOTA:WallpaperInfo es un objeto no relevante que utilizo para devolver la secuencia de imágenes descargadas del fondo de pantalla, es mucho código, así que lo omití.

''' <summary>
''' Tries to download the specified wallpaper from GameWallpapers server.
''' </summary>
''' <param name="id">The wallpaper id.</param>
''' <param name="res">The wallpaper resolution.</param>
''' <param name="cookieCollection">The cookie collection.</param>
''' <returns>A <see cref="WallpaperInfo"/> instance containing the wallpaper info and the image stream.</returns>
Private Function GetWallpaperMethod(ByVal id As String,
                                    ByVal res As String,
                                    ByRef cookieCollection As CookieCollection) As WallpaperInfo

    Dim request As HttpWebRequest
    Dim url As String = String.Format("http://www.gamewallpapers.com/members/getwallpaper.php?id={0}&res={1}", id, res)
    Dim contentDisposition As String
    Dim webResponse As WebResponse = Nothing
    Dim responseStream As Stream = Nothing
    Dim imageStream As MemoryStream = Nothing
    Dim wallInfo As WallpaperInfo = Nothing

    Try
        request = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
        With request
            .Method = "GET"
            .Headers.Add("Accept-Language", "en-US,en;q=0.5")
            .Headers.Add("Accept-Encoding", "gzip, deflate")
            .Headers.Add("Keep-Alive", "300")
            .Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            .AllowAutoRedirect = False
            .UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0"
            .KeepAlive = True
        End With

        If cookieCollection IsNot Nothing Then
            ' Pass cookie info so that we remain logged in.
            request.CookieContainer = Me.SetCookieContainer(url, cookieCollection)
        End If

        webResponse = request.GetResponse

        Using webResponse

            contentDisposition = CType(webResponse, HttpWebResponse).Headers("Content-Disposition")

            If Not String.IsNullOrEmpty(contentDisposition) Then ' There is an image to download.

                Dim filename As String = contentDisposition.Substring(contentDisposition.IndexOf("=") + "=".Length).
                                         TrimStart(" "c).TrimEnd({" "c, ";"c})

                Try
                    imageStream = New MemoryStream
                    responseStream = webResponse.GetResponseStream

                    Using responseStream

                        Dim buffer(2047) As Byte
                        Dim read As Integer

                        Do
                            read = responseStream.Read(buffer, 0, buffer.Length)
                            imageStream.Write(buffer, 0, read)
                        Loop Until read = 0

                        responseStream.Close()

                    End Using

                Catch ex As Exception
                    Throw

                End Try

                ' This is the object that I'll return
                ' that I'm storing the url, the wallpaper id,
                ' the wallpaper resolution, the wallpaper filename
                ' and finally the downloaded MemoryStream (the wallpaper image stream)
                wallInfo = New WallpaperInfo(url:=url,
                                             id:=id,
                                             resolution:=res,
                                             filename:=filename,
                                             imageStream:=imageStream)

            End If ' String.IsNullOrEmpty(contentDisposition)

        End Using ' webResponse

    Catch ex As Exception
        Throw

    Finally
        If webResponse IsNot Nothing Then
            webResponse.Close()
        End If
        If responseStream IsNot Nothing Then
            responseStream.Close()
        End If

    End Try

    Return wallInfo

End Function

Private Function SetCookieContainer(ByVal url As String,
                                    ByVal cookieCollection As CookieCollection) As CookieContainer

    Dim cookieContainer As New CookieContainer
    Dim refDate As Date

    For Each oldCookie As Cookie In cookieCollection

        If Not DateTime.TryParse(oldCookie.Value, refDate) Then

            Dim newCookie As New Cookie
            With newCookie
                .Name = oldCookie.Name
                .Value = oldCookie.Value
                .Domain = New Uri(url).Host
                .Secure = False
            End With

            cookieContainer.Add(newCookie)

        End If

    Next oldCookie

    Return cookieContainer

End Function

Aquí está la fuente completa de la que estoy tratando de darme cuenta con un uso de ejemplo de cómo esperaba que funcionara (un bucle para incrementar los identificadores de los fondos de pantalla para automatizar las descargas), funciona perfecto cuando CAMBIA el nombre de la URL base degamewallpapers.com acgwallpapers.com, porque esta fuente solo funciona paracgwallpapers.com pero solo lo estoy intentando congamewallpapers.com url:

http://pastebin.com/eyBxHmnJ

Respuestas a la pregunta(2)

Su respuesta a la pregunta