用Tor在程序里自动切换ip


转帖一段c#的代码,出自http://www.cnblogs.com/sxlfybb/

using 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.IO;

namespace TORDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.ip-number.com/index.asp");

            WebProxy proxy = new WebProxy("127.0.0.1",8118);
            req.Proxy = proxy;
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            using (Stream stream = res.GetResponseStream())
            {
                StreamReader sr = new StreamReader(stream);
                string str = sr.ReadToEnd();
                sr.Close();

                string pattern = @".*(?<Value>((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1}).){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})).*";
                Regex reg = new Regex(pattern);
                if(reg.IsMatch(str))
                {
                    Match m = reg.Match(str);
                    MessageBox.Show(m.Value);
                }
            }
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                TcpClient client = new TcpClient();
                client.Connect("127.0.0.1", Convert.ToInt32(tbPort.Text));
                NetworkStream stream = client.GetStream();

                byte[] cmd = null;
                string strCmd = string.Format("AUTHENTICATE "{0}"rn",tbPwd.Text);
                cmd = System.Text.Encoding.Default.GetBytes(strCmd);


                stream.Write(cmd, 0, cmd.Length);


                byte[] buffer = new byte[2];
                int count = 0;
                string strResponse = "";
                count = stream.Read(buffer, 0, buffer.Length);
                strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
                while (count != 0 && stream.DataAvailable)
                {
                    count = stream.Read(buffer, 0, buffer.Length);
                    strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
                    if (count < buffer.Length)
                    {
                        break;
                    }
                }
                if (strResponse.IndexOf("250") == -1)
                {
                    MessageBox.Show("AUTHENTICATE Fail!");
                    return;
                }

                buffer = new byte[1024];
                strCmd = "signal NEWNYMrn";
                cmd = System.Text.Encoding.Default.GetBytes(strCmd);
                stream.Write(cmd, 0, cmd.Length);

                strResponse = "";
                count = stream.Read(buffer, 0, buffer.Length);
                strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
                while (count != 0 && stream.DataAvailable)
                {
                    count = stream.Read(buffer, 0, buffer.Length);
                    strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
                    if (count < buffer.Length)
                    {
                        break;
                    }
                }
                if (strResponse.IndexOf("250") == -1)
                {
                    MessageBox.Show("Switch Identity Fail!");
                    return;
                }
                else
                {
                    MessageBox.Show("Switch OK!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("error:" + ex.Message);
            }      
        }
    }
}

引用通告地址: http://www.fanlujun.com.cn/trackback.php?tbID=132&extra=54bf84
标签: Tor C# 源码
评论: 1 | 引用: 0 | 阅读: 234
awfafw [ 2010-08-16 15:38 | 回复 | 编辑 删除 ]
Ancient Kings guard: new skill level Pal summons a temporary guardian, seemingly wear light wow powerleveling armour and shield winged creature. Depending on the validity of similar warcraft III paladin resurrection.
  • 1 
发表评论
昵 称: 密 码:
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容: