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