THIS IS FOR EDUCATIONAL PURPOSES ONLY. I WOULD NOT ADVISE THE USE OF THIS TO ALWAYS LOG-IN TO TWITTER.
First, you will need to download and install Tamper Data. It’s an add-on for Firefox that allows you to view and tamper with GET/POST web request data. We won’t be doing any tampering. We will be using it to view what POST parameters the page is expecting.
Next, navigate to the log in page for Twitter(http://twitter.com/login). Once the page has loaded, go to Tools –> Tamper Data to open Tamper Data. At the top of Tamper Data, click the Start Tamper button. After clicking the button, click the “Sign In” button on Twitter’s log in page. Once you hit the Sign In button, Tamper Data will prompt you with this popup….

Click “Tamper”. You will then be presented with this window…

If you notice on the right-hand side of the window, you will see the POST parameters. These are:
authenticity_token
session[username_or_email]
session[password]
commit
Now that we have those, we can close the Tamper Data window, and close Firefox.
Now for the code. The code is actually fairly simple. We are just going to use the WebBrowser class to make the requests to the server to get the html source of the page. This will give us the “authenticity_token” for us to use in the POST request.
string url = "https://twitter.com/login"; string username = "someUserName"; string password = "somePassword"; string commit = "Sign+In"; //this matches the data from Tamper Data private void Login() { WebBrowser b = new WebBrowser(); b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted); b.Navigate(url); } private void b_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { WebBrowser b = sender as WebBrowser; string response = b.DocumentText; // looks in the page source to find the authenticity token. // could also use regular expressions here. int index = response.IndexOf("authenticity_token"); int startIndex = index + 41; string authenticityToken = response.Substring(startIndex, 40); // unregisters the first event handler // adds a second event handler b.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted); b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted2); // format our data that we are going to post to the server // this will include our post parameters. They do not need to be in a specific // order, as long as they are concatenated together using an ampersand ( & ) string postData = string.Format("authenticity_token={2}&session[username_or_email]={0}&session[password]={1}&commit={3}", username, password, authenticityToken, commit); ASCIIEncoding enc = new ASCIIEncoding(); // we are encoding the postData to a byte array b.Navigate("https://twitter.com/sessions", "", enc.GetBytes(postData), "Content-Type: application/x-www-form-urlencoded\r\n"); } private void b_DocumentCompleted2(object sender, WebBrowserDocumentCompletedEventArgs e) { WebBrowser b = sender as WebBrowser; string response = b.DocumentText; if (response.Contains("Sign out")) { MessageBox.Show("Login Successful"); } }
And that’s all you need to do. You can now use the response variable to see the tweets that are in your timeline.