Oto Proxy Değiştirici [ vb.net ]

Merhabalar uzun zaman önce yapmak istediğim bir programdı. Keylogger mantığı ile konu sonunda vermiş olacağım İngilizce makale sayesinde ufak bir program kodladım. Programımız istenilen süre içerisinde liste kutusunda yer alan proxy IP adresini değiştiriyor.

İhtiyaç Listemiz;

2 Adet Label Birisinin Text Kısmında güncel adres yazacak diğerini saydırmak için text kısmında 0 yazacak 0 yazan label'imizi formumuzda gizleyelim. 1 Adet Combobox içerisinde dakikaya bağlı yapacağımız için sayılar yer alacak ben tek sayı yazdım yani 1,3,5... 

 Adet ListBox güncel proxy listemizi aktarmamız için. 

 Adet Webbrowser bağlantımızı test etmek için URL açtıracağız. 

1 Adet Textbox Webbrowser'a URL yönlendirmesi yapmak için. 

5 Adet Buton bunlar URL yönlendirmesi onayı, bağlantı başlaması ve durdurması komutu, yeni liste için liste kutusunun temizlenmesi komutu son olarak da proxy listesi seçimi komutu olacak. 

2 Adet timer birisi label'imizi 60'a kadar saydıracak Intervival 1000 olsun diğeri bağlantı yapacak intervival'i 250 olsun ikisininde Enabled özelliği False olsun. 1 Adet OpenFileDialog proxy listemizin seçimi için. 

NOT: Kodların açıklaması içerisindedir. 

Ekleyeceğimiz 2 Adet Kütüphane

Imports System.Runtime.InteropServices

Imports System.IO

Bağlantı Sağlanması İçin İşimize Yarayacak Kod Satırı:


Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean

End Function

Public Structure Struct_INTERNET_PROXY_INFO

Public dwAccessType As Integer

Public proxy As IntPtr

Public proxyBypass As IntPtr

End Structure

Private Sub UseProxy(ByVal strProxy As String)

Const INTERNET_OPTION_PROXY As Integer = 38

Const INTERNET_OPEN_TYPE_PROXY As Integer = 3

Dim struct_IPI As Struct_INTERNET_PROXY_INFO

struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY

struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)

struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")

Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))

Marshal.StructureToPtr(struct_IPI, intptrStruct, True)

Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))

End Sub

Form Load Olayına İstenilen Farklı Bir Adres Girilirse Script Hatası Verilmemesi İçin Girelim;

WebBrowser1.ScriptErrorsSuppressed = True

WebBrowser1.ObjectForScripting = True

DUR Butonu Kodumuz;

Timer2.Stop()

Label1.Text = "0" 'Timer'ları Durdurarak Labelimizi 0'lıyoruz.

Timer1.Stop()

BAŞLAT Butonu Kodumuz;

Timer1.Start() ' Timer'lara başlamak için komut verdik.

Timer2.Start()

LİSTE SEÇ Butonu Kodumuz;

Dim openfile = New OpenFileDialog() ' Metin belgesi içerisinde yar alan güncel proxy listemizi liste kutumuza yansıtıyoruz.

openfile.Filter = "Metin Belgesi (*.txt)|*.txt"

If (openfile.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then

Dim myfile As String = openfile.FileName

Dim allLines As String() = File.ReadAllLines(myfile)

For Each line As String In allLines

ListBox1.Items.Add(line)

Next

End If

TEMİZLE Butonu kodumuz;

ListBox1.Items.Clear()

TEST Butonu Kodumuz;

WebBrowser1.Navigate(TextBox3.Text) ' Proxy'lerin URL açıp açmadığını kontrol etmek için textbox içeresinde yer alan URL'yi aç diyoruz.

TİMER Kodlarımız bu. Intervival kısmını 250 yaptığınıza girin;

If ListBox1.SelectedIndex = ListBox1.Items.Count - 1 Then

ListBox1.SelectedIndex = 0

Else ' Listemizi otomatik bağlantı için aşağı indiriyoruz

If Label1.Text = ComboBox1.SelectedItem * "60" Then ' comboboxta yer alan sayı kadar 60 ile çarpıyoruz 60 saniye = 1 dk.

ListBox1.SelectedIndex += 1

UseProxy(ListBox1.SelectedItem) ' seçilen liste ile bağlantı kur diyoruz

Label1.Text = "0" ' dakika yenilenmesi için label'i sıfırla diyoruz

Else

End If

End If

TİMER Kodlarımız. Intervival kısmını 1000 yaptığınıza girin;

Label1.Text = Label1.Text + 1' labelimizi 1 arttırıyoruz bu sayede 60'a kadar sayacak.

Yararlandığım Kaynak;

https://stackoverflow.com/questions/17911946/vb-net-httpwebrequest-with-proxy