بنام خدای مهربان
سلام دوستان
این پست نحوه دریافت اطلاعات از وب رو میخام آموزش بدم
همونطور که میدونید سایتها بسته به سلیقه برنامه نویس با متدهای مختلفی نوشته میشن   خب همینطور دریافت اطلاعات از اون هم فرق میکنه
کاربرد پروکسی در برنامه های کرک و یا برنامه های تست وب ,...
برای دریافت اطلاعات از وب با سی شارپ راههای مختلفی هست مثلا کامپوننت htmlagilitypack 

و یا کلاس webClient
در این تمرین  با کلاس httpWebRequest مقداری رو از سایت میگیریم و این مقدار پروکسی هستش
خب کلاس httpwebrequest داراری متدهای فراوانی هست که تو راهنمای ماکروسافت مشروحا قرار داده شده
ابتدا یه نمونه از این کلاس ایجاد میکنیم
و یه ورودی بهش میدیم

  HttpWebRequest httpW = (HttpWebRequest)HttpWebRequest.Create(textBox1.Text);

و سپس وقتی کاربر ادرس رو وارد کرد بازخورد اونو با متد response میگیریم



 HttpWebResponse resp = (HttpWebResponse)httpW.GetResponse();

الان باید با کلاس استریم دریافتی ها رو بخونیم

            StreamReader sr = new StreamReader(resp.GetResponseStream());

 تو این خط باید متدی ایجاد میکردم که رشته هایی که دریافت کردیم رو بخونه اینکارو با استریم ریدیر کردیم
اون رشته ای رو که گرفتیم توسط استریم میخونیم و اون رشته ها الان قروقاطی هستن
برای دریافت پروکسی باید از یه نوع بنام رگولار اکسپریشن


string MyReg = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}:[0-9]{1,4}";
            Regex reg = new Regex(MyReg);


برای تفکیک اعداد از کلمات باید یه الگویی از این کلاس بسازیم که اعداد رو به شکلی که ما میخاییم جدا کنه
مثلا
[0-9]
یعنی اعداد بین 0و9
{1,3}
این یعنی رقم ما حداقل 1 و حداکثر 3 عدد باشه
خب این پروسه رو ادامه میدم در اخر نیز به همین شکل پورت رو میگریم


نهایتا برنامه رو اجرا میکنیم
این همه کدها

از مراحل ساخت برنامه فیلم تهیه کردم که میتونید در==> آپارات ببینید

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
          

        }

        private void Button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest httpW = (HttpWebRequest)HttpWebRequest.Create(textBox1.Text);
            HttpWebResponse resp = (HttpWebResponse)httpW.GetResponse();
            StreamReader sr = new StreamReader(resp.GetResponseStream());
            string StrUrl = sr.ReadToEnd();
            string MyReg = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}:[0-9]{1,4}";
            Regex reg = new Regex(MyReg);
            MatchCollection mat = reg.Matches(StrUrl);
            foreach (Match item in mat)
            {
                listBox1.Items.Add(item);
            }
            resp.Close();
            label1.Text = listBox1.Items.Count.ToString();
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            SaveFileDialog sv = new SaveFileDialog();
            if (sv.ShowDialog()==DialogResult.OK)
            {
                using (StreamWriter sw = new StreamWriter(sv.FileName))
                {
                    foreach (object item in listBox1.Items)
                {
                   
                        sw.WriteLine(item);
                   
                }
                }
            }
        }
    }
}