YouTube Subscribe - HttpWebRequest [PROBLEM]

H3x0S

New member
Joined
Mar 19, 2011
Messages
1
Programming Experience
1-3
Here, I managed to login to YouTube, but I can't subscribe. I think that problem is in cookies.

Error: The remote server returned an error: (400) Bad Request.

VB.NET:
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Web
Public Class Form1
 Dim F As New Functions
 Public Function GetBetween(ByRef strSource As String, ByRef strStart As  String, ByRef strEnd As String, Optional ByRef startPos As Integer = 0)  As String
  Dim iPos As Integer, iEnd As Integer, lenStart As Integer = strStart.Length
  Dim strResult As String

  strResult = String.Empty
  iPos = strSource.IndexOf(strStart, startPos)
  iEnd = strSource.IndexOf(strEnd, iPos + lenStart)
  If iPos <> -1 AndAlso iEnd <> -1 Then
   strResult = strSource.Substring(iPos + lenStart, iEnd - (iPos + lenStart))
  End If
  Return strResult
 End Function
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim Source As String =  F.HttpGet("https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26nex ​t%3D%252F&hl=en_US&ltmpl=sso")
    Dim DSH As String = vbNullString

    DSH = GetBetween(Source, "id=" & Chr(34) & "dsh" & Chr(34), " />")
    DSH = GetBetween(DSH, Chr(34), Chr(34))

    Dim GALX As String = vbNullString
    GALX = GetBetween(Source, "name=" & Chr(34) & "GALX" & Chr(34), " />")
    GALX = GetBetween(GALX, Chr(34), Chr(34))

    F.HttpPost("https://www.google.com/accounts/ServiceLoginAuth",  "ltmpl=sso&pstMsg=&dnConn=&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26nex ​t%3D%252Findex&service=youtube&uilel=3&dsh=" + DSH +  "&ltmpl=sso&hl=en_US&ltmpl=sso&timeStmp=&secTok=&GALX="  + GALX +  "&Email=Username&Passwd=Password&rmShown=1&signIn=Sign+in&asts=",  "application/x-www-form-urlencoded")

    Dim S As String = F.HttpGet("http://www.youtube.com/user/Chuubii")
    Dim Session_Token As String = GetBetween(S, "data-subscription-xsrf=" + Chr(34), "==") + "=="
    'Line under this is problem...
    F.HttpPost("http://www.youtube.com/subscription_ajax?action_create_subscription_to_user=1&feature=channel",  "u=Chuubii&menu_type=button&session_token=" + Session_Token,  "application/x-www-form-urlencoded")

 End Sub

End Class

Class Functions:

VB.NET:
Imports System.Net
Imports System.IO
Imports System.Text

Public Class Functions
 Dim Cookies As New CookieContainer
    Public Function HttpGet(ByVal Address As String)
  Dim Request As HttpWebRequest = DirectCast(WebRequest.Create(Address), HttpWebRequest)
  Request.CookieContainer = Cookies
  Dim Response As HttpWebResponse = DirectCast(Request.GetResponse(), HttpWebResponse)
  Cookies.Add(Response.Cookies)
  Dim Reader As New StreamReader(Response.GetResponseStream())
  Dim Source As String = Reader.ReadToEnd
  Return Source
    End Function
    Public Function HttpPost(ByVal Address As String, ByVal PostData As String, ByVal ContentType As String)
  ServicePointManager.Expect100Continue = False
  Dim Encoding As New UTF8Encoding()
  Dim Bytes As Byte() = Encoding.GetBytes(PostData)
  Dim Request As HttpWebRequest = DirectCast(WebRequest.Create(Address), HttpWebRequest)
  Request.Method = "POST"
  Request.CookieContainer = Cookies
  Request.ContentType = ContentType
  Request.Referer = "http://www.google.com"
  Request.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
  Request.ContentLength = Bytes.Length
  Dim RequestStream As Stream = Request.GetRequestStream()
  RequestStream.Write(Bytes, 0, Bytes.Length)
  RequestStream.Close()

  Dim Response As HttpWebResponse
  Response = DirectCast(Request.GetResponse(), HttpWebResponse)
  Cookies.Add(Response.Cookies)
  Dim RequestReader As New StreamReader(Response.GetResponseStream)
  Dim Source As String = RequestReader.ReadToEnd
  Return Source
    End Function
End Class
 
Back
Top