rendered paste bodyusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Web;
using System.IO;
using System.Threading;
using System.Diagnostics;
namespace TrackBack
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int intSuccessful = 0;
int seconds = 0;
int intAll = 0;
int fail = 0;
int scraped = 0;
string[] trackbackRegex = {
"trackback:ping=\"(?<trackback>.*?)\"",
"<a href=\"(?<trackback>[^\"]+)\" rel=\"trackback\">",
"Trackback URI:.(?<trackback>http:.*?)<",
"<a href=\"(?<trackback>[^\"]+)\">Trackback <acronym",
"<a href=\"(?<trackback>[^\"]+)\" title=\"Trackback URI\">",
"\"(?<trackback>http[^\"]*wp-trackback.php[^\"]*)\"/",
"\"(?<trackback>http[^\"]*/trackback/[^\"]*)\"/",
"(?<trackback>http.*action=Trackback.*)",
">(?<trackback>[^<]*trackback.php[^<]*)<",
"href=\"(?<trackback>[^\"]+)\" onclick=\"opentrackback",
"\"(?<trackback>http[^\"]+mt-tb.cgi[^\"]*)\"",
"(?<trackback>http://spaces.msn.com[^\']+.trak)",
"/\'(?<trackback>http://spaces.msn.com[^\']+trackback)",
"<a href=\"(?<trackback>[^\"]+)\">trackback uri.?</a>"
};
Random RandomClass = new Random();
string[] predefinedKeywords = { "\"powered by moveable type\"", "\"powered by drupal\"", "\"powered by joomla\"", "\"powered by typepad\"", "\"powered by wordpress\"", "\"powered by qumana\"", "\"published with textpattern\"" };
public void ReadFile(string filename)
{
StreamReader file;
file = File.OpenText(filename);
int max, ports;
ThreadPool.GetMaxThreads(out max, out ports);
ThreadPool.SetMaxThreads(Convert.ToInt32(txtThreadCount.Text), ports);
ThreadPool.GetMinThreads(out max, out ports);
ThreadPool.SetMinThreads(30, ports);
List<string> urlArray = new List<string>();
List<string> randomizedUrlsArray = new List<string>();
int i = 0;
Random RandomClass3 = new Random();
while (!file.EndOfStream)
{
string url = file.ReadLine().Trim();
urlArray.Add(url);
}
int s = 0;
while ( s<i)
{
randomizedUrlsArray.Add(urlArray[RandomClass3.Next(0, urlArray.Count)]);
s+=1;
}
randomizedUrlsArray.ForEach(delegate(String url2){WaitCallback callback = delegate(object state) { SendTrackback((string)state); };ThreadPool.QueueUserWorkItem(callback, url2);});
}
public void ReadFile2(string filename)
{
StreamReader file;
file = File.OpenText(filename);
while (!file.EndOfStream)
{
string keyword = file.ReadLine().Trim();
WaitCallback callback = delegate(object state) { ScrapeSE((string)state); };
ThreadPool.QueueUserWorkItem(callback, keyword);
}
}
public void ReadFile3(string filename)
{
StreamReader file;
file = File.OpenText(filename);
int max, ports;
ThreadPool.GetMaxThreads(out max, out ports);
ThreadPool.SetMaxThreads(Convert.ToInt32(txtThreadCount2.Text), ports);
ThreadPool.GetMinThreads(out max, out ports);
ThreadPool.SetMinThreads(30, ports);
while (!file.EndOfStream)
{
string url = file.ReadLine().Trim();
WaitCallback callback = delegate(object state) { GutTrackBackUri((string)state); };
ThreadPool.QueueUserWorkItem(callback, url);
}
}
public void ScrapeGoogle(string wholeKeyword)
{
HttpWebRequest myReq;
try { myReq = (HttpWebRequest)WebRequest.Create("http://www.google.com/search?q=" + wholeKeyword + "&num=100" ); }
catch { return; }
myReq.UserAgent = "Mozilla FireFox";
WebResponse myRes;
try { myRes = myReq.GetResponse(); }
catch { return; }
StreamReader responseStream = new StreamReader(myRes.GetResponseStream(), System.Text.Encoding.GetEncoding(1252));
string response;
try { response = responseStream.ReadToEnd(); }
catch { return; }
Regex r = new Regex("<div class=g><a href=\"(?<urls>.*?)\"", RegexOptions.Compiled);
responseStream.Close();
myRes.Close();
try
{
MatchCollection matches = r.Matches(response, 0);
foreach (Match match in matches)
{
StreamWriter SW = File.AppendText(txtLog2.Text);
SW.WriteLine(match.Groups["urls"].Value);
SW.Close();
scraped += 1;
}
}
catch
{
return;
}
}
public void ScrapeYahoo(string wholeKeyword)
{
HttpWebRequest myReq;
try { myReq = (HttpWebRequest)WebRequest.Create("http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=" + RandomClass.Next(0,100000).ToString() + "&results=100&query=" + wholeKeyword); }
catch { return; }
myReq.UserAgent = "Mozilla FireFox";
WebResponse myRes ;
try { myRes = myReq.GetResponse(); }
catch {return;};
StreamReader responseStream = new StreamReader(myRes.GetResponseStream(), System.Text.Encoding.GetEncoding(1252));
string response;
try { response = responseStream.ReadToEnd(); }
catch { return; }
Regex r = new Regex("</Summary><Url>(?<urls>.*?)</Url>", RegexOptions.Compiled);
responseStream.Close();
myRes.Close();
try
{
MatchCollection matches = r.Matches(response, 0);
foreach (Match match in matches)
{
StreamWriter SW = File.AppendText(txtLog2.Text);
SW.WriteLine(match.Groups["urls"].Value);
SW.Close();
scraped += 1;
}
}
catch
{
return;
}
}
public void ScrapeMsn(string wholeKeyword)
{
HttpWebRequest myReq;
try { myReq = (HttpWebRequest)WebRequest.Create("http://search.msn.com/results.aspx?format=rss&FORM=R0RE&q=" + wholeKeyword ); }
catch { return; }
myReq.UserAgent = "Mozilla FireFox";
WebResponse myRes;
try
{
myRes = myReq.GetResponse();
}
catch
{
return;
}
StreamReader responseStream = new StreamReader(myRes.GetResponseStream(), System.Text.Encoding.GetEncoding(1252));
string response;
try { response = responseStream.ReadToEnd(); }
catch { return; }
Regex r = new Regex("<link>(?<urls>.*?)</link>", RegexOptions.Compiled);
responseStream.Close();
myRes.Close();
try
{
MatchCollection matches = r.Matches(response, 0);
foreach (Match match in matches)
{
StreamWriter SW = File.AppendText(txtLog2.Text);
SW.WriteLine(match.Groups["urls"].Value);
SW.Close();
scraped += 1;
}
}
catch
{
return;
}
}
public void ScrapeSE(string keyword)
{
foreach (string preKeyword in predefinedKeywords)
{
string wholeKey = encode(preKeyword + " " + keyword);
string gWholeKey,mWholeKey;
int s = 0;
int f = 1;
while (s < 1000)
{
gWholeKey = wholeKey + "&start=" + s;
WaitCallback callback = delegate(object state) { ScrapeGoogle((string)state); };
ThreadPool.QueueUserWorkItem(callback, gWholeKey);
WaitCallback callback2 = delegate(object state) { ScrapeYahoo((string)state); };
ThreadPool.QueueUserWorkItem(callback2, gWholeKey);
s = s + 100;
}
while (f < 1000)
{
mWholeKey = wholeKey + "&first=" + f;
WaitCallback callback3 = delegate(object state) { ScrapeMsn((string)state); };
ThreadPool.QueueUserWorkItem(callback3, mWholeKey);
f = f + 10;
}
}
}
public void SendTrackback(string trackbackUri)
{
StringBuilder sb = new StringBuilder();
sb.Append("url=");
sb.Append(encode(txtUrl.Text));
sb.Append("&");
sb.Append("title=");
sb.Append(encode(txtTitle.Text));
sb.Append("&");
sb.Append("exerpt=");
sb.Append(encode(txtSnippet.Text));
sb.Append("&");
sb.Append("blog_name=");
sb.Append(encode(txtBlogName.Text));
sb.Append("&");
HttpWebRequest httpRequest;
try { httpRequest = (HttpWebRequest)WebRequest.Create(trackbackUri); }
catch { return; }
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.Method = "POST";
byte[] postByteArray = Encoding.ASCII.GetBytes(sb.ToString());
httpRequest.ContentLength = postByteArray.Length;
Stream stream;
try
{
stream = httpRequest.GetRequestStream();
}
catch
{
return;
}
stream.Write(postByteArray, 0, postByteArray.Length);
stream.Close();
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
}
catch
{
return;
}
StreamReader responseStream = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.GetEncoding(1252));
string response;
try { response = responseStream.ReadToEnd(); }
catch { return; }
responseStream.Close();
httpResponse.Close();
Regex rSuccess = new Regex(@"<error>(?<value>.*?)</error>", RegexOptions.Compiled);
string returnstuff = "";
try
{
returnstuff = rSuccess.Match(response).Result("${value}");
if (returnstuff == "0")
{
StreamWriter SW = File.AppendText(txtLogAddress.Text);
SW.WriteLine(trackbackUri);
SW.Close();
intSuccessful += 1;
}
else { fail += 1; }
}
catch
{
fail += 1;
}
intAll += 1;
}
public void GutTrackBackUri(string uri)
{
HttpWebRequest myReq;
try { myReq = (HttpWebRequest)WebRequest.Create(uri); }
catch { return; }
myReq.UserAgent = "Mozilla FireFox";
WebResponse myRes;
try { myRes = myReq.GetResponse(); }
catch { return; };
StreamReader responseStream = new StreamReader(myRes.GetResponseStream(), System.Text.Encoding.GetEncoding(1252));
string response;
try { response = responseStream.ReadToEnd(); }
catch { return; }
responseStream.Close();
myRes.Close();
foreach (string regex in trackbackRegex)
{
Regex r = new Regex(regex, RegexOptions.Compiled);
try
{
MatchCollection matches = r.Matches(response, 0);
foreach (Match match in matches)
{
//MessageBox.Show(match.Groups["trackback"].Value);
StreamWriter SW = File.AppendText("log2.txt");
SW.WriteLine(match.Groups["trackback"].Value);
SW.Close();
}
}
catch
{
}
}
}
public string encode(string input)
{
string newValue = input.Replace("\"", "'");
newValue = System.Web.HttpUtility.UrlEncode(newValue);
newValue = newValue.Replace("%2f", "/");
return newValue;
}
private void button1_Click(object sender, EventArgs e)
{
if ((txtThreadCount.Text != "") && (txtLogAddress.Text != "") && (txtSnippet.Text != "") && (txtTitle.Text != "") && (txtUrl.Text != "") && (txtBlogName.Text != "") && (txtAddress.Text != ""))
{
ThreadStart starter = delegate { ReadFile(txtAddress.Text); };
new Thread(starter).Start();
}
else
{
MessageBox.Show("Please fill in all the boxes d00d :D ");
}
}
public void button2_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
txtLogAddress.Text = openFileDialog1.FileName;
}
private void timer1_Tick(object sender, EventArgs e)
{
label10.Text = intSuccessful.ToString() + " Successful Posts";
label12.Text = fail.ToString() + " Failed Posts";
seconds += 1;
double successfullSpeed = intSuccessful / seconds;
label11.Text = " Speed of Successful Trackbacks: " + successfullSpeed.ToString() + " trackbacks / second";
double overallSpeed = intAll / seconds;
label13.Text = " Speed of Overall Trackbacks: " + overallSpeed.ToString() + " trackbacks / second";
label15.Text = scraped + " links scraped off Google, Yahoo! and MSN ";
}
private void button3_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
txtAddress.Text = openFileDialog1.FileName;
}
private void button5_Click(object sender, EventArgs e)
{
openFileDialog2.ShowDialog();
txtLog2.Text = openFileDialog2.FileName;
}
private void button4_Click(object sender, EventArgs e)
{
if ((txtKeywords.Text != "") && (txtLog2.Text != "") && (txtThreadCount1.Text != ""))
{
int max, ports;
ThreadPool.GetMaxThreads(out max, out ports);
ThreadPool.SetMaxThreads(Convert.ToInt32(txtThreadCount1.Text), ports);
ThreadPool.GetMinThreads(out max, out ports);
ThreadPool.SetMinThreads(30, ports);
ThreadStart starter = delegate { ReadFile2(txtKeywords.Text); };
new Thread(starter).Start();
}
else
{
MessageBox.Show("Please fill in all the boxes d00d :D ");
}
}
private void button7_Click(object sender, EventArgs e)
{
openFileDialog3.ShowDialog();
txtToSpam.Text = openFileDialog3.FileName;
}
private void button6_Click(object sender, EventArgs e)
{
if (txtToSpam.Text != "")
{
ThreadStart starter = delegate { ReadFile3(txtToSpam.Text); };
new Thread(starter).Start();
}
}
private void tabPage2_Click(object sender, EventArgs e)
{
}
private void label11_Click(object sender, EventArgs e)
{
}
private void button8_Click(object sender, EventArgs e)
{
openFileDialog4.ShowDialog();
txtKeywords.Text = openFileDialog4.FileName;
}
private void txtThreadCount1_TextChanged(object sender, EventArgs e)
{
}
}
}