PDA

View Full Version : سوال: چگونه پروكسي browser را دايناميك تغيير دهيم؟



kiarash_h18
شنبه 12 اردیبهشت 1388, 10:42 صبح
با سلام به همه دوستان و اساتيد محترم.

من مي خوام توسط #C يك WinApp داشته باشم كه پروكسي browser را به صورت دايناميك تغيير بده.

يعني در يك بازه زماني معين ، اول بياد پروكسي browser را چك كنه (Address , Port) ، اگه به صورت پيش فرضي كه تعيين كرديم بود كه هيچ ، اگه مغايرت داشت پروكسي browser را به پيش فرض تغيير دهد. و اين فرآيند مثلا هر 5 دقيقه چك و انجام شود.

در ضمن به صورتي باشه كه با لود ويندوز اين برنامه به صورت hidden اجرا شود.

با تشكر فرآوان.:لبخندساده:

prankster
شنبه 12 اردیبهشت 1388, 12:45 عصر
كليد زير در Registry (براي Internet Explorer):
HKEY_CURRENT_USR\Software\Microsoft\Windows\Intern et Settings\Proxy Server

مي توانيد windows service‌ براي hidden اجرا شدن بنامه ايجاد كنيد

kiarash_h18
یک شنبه 13 اردیبهشت 1388, 08:17 صبح
كليد زير در Registry (براي Internet Explorer):
HKEY_CURRENT_USR\Software\Microsoft\Windows\Intern et Settings\Proxy Server

مي توانيد windows service‌ براي hidden اجرا شدن بنامه ايجاد كنيد

دوست عزيز ممنون، ولي منظورم اينه كه در #C چطور ميشه با Lan Setting > قسمت Proxy Server در Browser كار كرد و اعمال تغييرات در مقادير آن كرد؟؟؟

kiarash_h18
یک شنبه 13 اردیبهشت 1388, 11:24 صبح
يعني از اساتيد كسي اين كار و نكرده يا اطلاعي نداره؟؟؟؟

prankster
یک شنبه 13 اردیبهشت 1388, 12:57 عصر
با استفاده از #C كليد مورد نظر در registry را تغيير دهيد:


string path = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
Microsoft.Win32.RegistryKey regKeyAppRoot = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( path);
regKeyAppRoot.SetValue("ProxyEnable", 1);
regKeyAppRoot.SetValue("ProxyServer", "127.0.0.1:80");

kiarash_h18
یک شنبه 13 اردیبهشت 1388, 14:41 عصر
با استفاده از #C كليد مورد نظر در registry را تغيير دهيد:


string path = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
Microsoft.Win32.RegistryKey regKeyAppRoot = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( path);
regKeyAppRoot.SetValue("ProxyEnable", 1);
regKeyAppRoot.SetValue("ProxyServer", "127.0.0.1:80");


خيلي خيلي ممنونم، واقعا مفيد بود.

فقط اينكه در Firefox چطور ميتونم همين مسئله را اعمال كنم؟

prankster
یک شنبه 13 اردیبهشت 1388, 15:17 عصر
متاسفاه FireFox تنظيمات مربوطه را خودش نگهداري مي كند. در registry كليدي مربوط به proxy‌ در FireFox وجود ندارد!

hamid411
یک شنبه 13 اردیبهشت 1388, 18:24 عصر
دوست من تا فردا اگه بتونی صبر کنی بهت می گم،الان یه کم عجله دارم نمی تونم

13601360
یک شنبه 13 اردیبهشت 1388, 19:32 عصر
دوست عزیز شما می خواهید جلوی استفاده از فیلتر شکن توسط کاربر رو بگیرید؟

hamid411
دوشنبه 14 اردیبهشت 1388, 09:35 صبح
ببین برو تو فایرفاکس، از tools>options>advanced>network>setting ب عد گزینه automatic ... (اولین گزینه از پایین) از پایین رو انتخاب کن.
و آدرسه یه فایلی رو بهش بده
حالا با برنامت می تونی اون فایل رو ایجاد کنی و توش پروکسیتو بنویسی .
جالب بود نه ؟ :لبخند:
برای اطلاعات کاملتر
http://forums.mozillazine.org/viewtopic.php?f=38&t=625999&st=0&sk=t&sd=a

kiarash_h18
دوشنبه 14 اردیبهشت 1388, 12:32 عصر
دوست عزیز شما می خواهید جلوی استفاده از فیلتر شکن توسط کاربر رو بگیرید؟


دقيقا مي خوام جلوي استفاده از فيلتر شكن توسط كاربر رو بگيرم.

البته به نظرم ميرسه كه از طريق #C امكانش باشه كه كلا جلوي Run شدن برنامه اي خاص رو گرفت.
قاعدتا بايد با رجيستري كار كرد.
اگه از دوستان كسي Syntax code در رابطه با اين مسئله رو بذاره خيلي عالي ميشه.

اگر بشه جلوي استفاده از سايت هاي فيلتر شكن رو هم گرفت كه خيلي عاليه.

kiuhnmgtrdcv
دوشنبه 14 اردیبهشت 1388, 12:50 عصر
کدی که میتونه proxy ، ست کنه ، خودم هنوز وقت نکردم این کدو تست کنم



// Create a new request to the mentioned URL.
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
WebProxy myProxy = new WebProxy();
Obtain the 'Proxy' of the Default browser.
myProxy =(WebProxy) (myWebRequest.Proxy);
// Print the Proxy Url to the console.
Console.WriteLine("\nThe actual default Proxy settings are {0}", myProxy.Address);
try
{
Console.WriteLine("\nPlease enter the new Proxy Address that is to be set:");
Console.WriteLine("(Example:http://myproxy.com:port)");
string proxyAddress;
proxyAddress = Console.ReadLine();
if (proxyAddress.Length > 0)
{
Console.WriteLine("\nPlease enter the Credentials ");
Console.WriteLine("Username:");
string username;
username = Console.ReadLine();
Console.WriteLine("\nPassword:");
string password;
password = Console.ReadLine();
// Create a new Uri object.
Uri newUri = new Uri(proxyAddress);
// Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
myProxy.Address = newUri;
// Create a NetworkCredential object and associate it with the Proxy property of request object.
myProxy.Credentials = new NetworkCredential(username, password);
myWebRequest.Proxy = myProxy;
}
Console.WriteLine("\nThe Address of the new Proxy settings are {0}", myProxy.Address);
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

prankster
دوشنبه 14 اردیبهشت 1388, 16:56 عصر
دقيقا مي خوام جلوي استفاده از فيلتر شكن توسط كاربر رو بگيرم

قاعدتا اين به تنظيمات شبكه مربوط مي شود! با نصب RRAS روي كامپيوتر gateway و بستن port يا ip خاصي شبكه را راحت تر كنترل مي كنيد تا هر سيستم را جداگانه!

kiarash_h18
دوشنبه 14 اردیبهشت 1388, 23:26 عصر
ببین برو تو فایرفاکس، از tools>options>advanced>network>setting ب عد گزینه automatic ... (اولین گزینه از پایین) از پایین رو انتخاب کن.
و آدرسه یه فایلی رو بهش بده
حالا با برنامت می تونی اون فایل رو ایجاد کنی و توش پروکسیتو بنویسی .
جالب بود نه ؟ :لبخند:
برای اطلاعات کاملتر
http://forums.mozillazine.org/viewtopic.php?f=38&t=625999&st=0&sk=t&sd=a

دوست عزيز ممنونم از راهنماييتون ولي در #C چطور ميشه به Setting هاي Firefox دسترسي پيدا كرد و اعمال تغييرات كرد؟

hamid411
سه شنبه 15 اردیبهشت 1388, 09:24 صبح
یه سوال
اگه می خوای جلوی استفاده از فیلترشکن راه ببندی چرا گیر دادی به فایرفاکس.
یه کار دیگه بکن

kiarash_h18
سه شنبه 15 اردیبهشت 1388, 11:57 صبح
من Event را ميخوام تا زماني كه برنامه Run هست، مثلا هر 5 دقيقه يكبار انجام بشه . براي همين هم به اين شيوه عمل كردم :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

private void timer1_Tick(object sender, EventArgs e)
{
change();
}

private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
}

private void change()
{
string path = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
Microsoft.Win32.RegistryKey regKeyAppRoot = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( path);
regKeyAppRoot.SetValue("ProxyEnable", 1);
regKeyAppRoot.SetValue("ProxyServer", "nothing:3128");
}
}
}



ولي Event طبق زمان داده شده فاير نميشه، فقط Form Load Event فاير ميشه.

لطفا دوستان كمك كنند.
ممنون.

prankster
سه شنبه 15 اردیبهشت 1388, 14:06 عصر
timer1.Start();

kiarash_h18
چهارشنبه 16 اردیبهشت 1388, 11:15 صبح
[مي توانيد windows service‌ براي hidden اجرا شدن بنامه ايجاد كنيد


چطوري ميتونم Windows Service براي برنامه ايجاد كنم كه بعد از نصب برنامه، موقع هر بار لود شدن Windows اين برنامه به صورت hidden اجرا بشه؟

prankster
چهارشنبه 16 اردیبهشت 1388, 12:11 عصر
پروژه اي از جنس windows service ايجاد كنيد و كدي كه در برنامه form نوشته ايد را در متد OnStart آن بنويسيد.
براي نصب windows service نياز به برنامه اي براي نصب آن داريد. اگر هنگامي كه كد service در design mode باز است بر روي آن right click‌ كنيد مي توانيد Installer براي آن ايجاد كنيد، تنظيمات windows service را وارد كنيد و كل اين پروژه را براي نصب در يك پروژه Setup قرار دهيد!
كمي پيچيده به نظر مي رسد ولي كار بسيار راحتي است، مطمئنا در اين سايت يا مشابه آن مي توانيد نحوه install كردن windows service را پيدا كنيد

kiarash_h18
جمعه 18 اردیبهشت 1388, 23:11 عصر
پروژه اي از جنس windows service ايجاد كنيد و كدي كه در برنامه form نوشته ايد را در متد OnStart آن بنويسيد.
براي نصب windows service نياز به برنامه اي براي نصب آن داريد. اگر هنگامي كه كد service در design mode باز است بر روي آن right click‌ كنيد مي توانيد Installer براي آن ايجاد كنيد، تنظيمات windows service را وارد كنيد و كل اين پروژه را براي نصب در يك پروژه Setup قرار دهيد!
كمي پيچيده به نظر مي رسد ولي كار بسيار راحتي است، مطمئنا در اين سايت يا مشابه آن مي توانيد نحوه install كردن windows service را پيدا كنيد

آقا متشکر, ولی همانطور که گفتتید یک مقدار پیچیدست.
اگه نمونه ای دارید, لطفا در اختیار ما هم قرار بدید.

kiarash_h18
شنبه 26 اردیبهشت 1388, 14:01 عصر
من يك WIndows Service ايجاد كردم و كد برنامه ام رو در متد OnStart اون نوشتم.
وقتي كه service را اجرا مي كنم، فايل test.txt را ميسازه و DateTime و وارد ميكنه
ولي اون قسمتي كه مربوط به registry ميشه، اعمال نميشه.
فكر ميكنيد از چي ميتونه باشه؟؟؟


using Microsoft.Win32;
using System.IO;

protected override void OnStart(string[] args)
{
string path = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
RegistryKey regKeyAppRoot = Registry.CurrentUser.CreateSubKey(path);
regKeyAppRoot.SetValue("ProxyEnable", 2);
regKeyAppRoot.SetValue("ProxyOverride", "172.17.*;192.168.*;<local>");
regKeyAppRoot.SetValue("ProxyServer", "internetserver5:3128");
//label2.Text = "Proxy server has chenge successfully";
StreamWriter sw = new StreamWriter("e://test.txt", true);
sw.Write("start at :" + DateTime.Now.ToString());
sw.Close();
}

shytonak
شنبه 26 اردیبهشت 1388, 14:40 عصر
دوست من يه نگاه به اين لينك بنداز.
http://www.codeproject.com/KB/IP/changeproxy1.aspx

kiarash_h18
شنبه 26 اردیبهشت 1388, 15:03 عصر
دوست من يه نگاه به اين لينك بنداز.
http://www.codeproject.com/KB/IP/changeproxy1.aspx

ممنون از توجه شما.
ولي وقتي كه كد مربوط به رجيستري رو در win Application اجرا مي كنم بدون هيچ مشكلي كار مي كنه، اما وقتي كه همون كد را در OnStart در پروژه Windows sercive اجرا مي كنم فقط قسمت

StreamWriter sw = new StreamWriter("e://test.txt", true);
sw.Write("start at :" + DateTime.Now.ToString());
sw.Close();
اجرا ميشه و

string path = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
RegistryKey regKeyAppRoot = Registry.CurrentUser.CreateSubKey(path);
regKeyAppRoot.SetValue("ProxyEnable", 2);
regKeyAppRoot.SetValue("ProxyOverride", "172.17.*;192.168.*;<local>");
regKeyAppRoot.SetValue("ProxyServer", "internetserver5:3128");
اجرا نميشه.

shytonak
شنبه 26 اردیبهشت 1388, 15:30 عصر
دوست من كدت مشكل نداره ممكنه از using درست استفاده نكردي و همين كد رو مستقيما paste كردي.

kiarash_h18
شنبه 26 اردیبهشت 1388, 16:22 عصر
دوست من كدت مشكل نداره ممكنه از using درست استفاده نكردي و همين كد رو مستقيما paste كردي.

نه، Using ها هم درسته، دقيقا چك كردم.
واقعا عجيبه!!!

prankster
شنبه 26 اردیبهشت 1388, 22:59 عصر
احتمالا windows service را با account غیر از User نصب می کنید! توجه کنید که تنظیمات proxy مربوط به user است، به همین دلیل در registry در Registry.CurrentUser تنظیمات را اعمال می کنید. در صورتی که windows service را با LocalService یا LocalSystem نصب کنید، قبل از login کردن user و با بالا آمدن windows برنامه اجرا می شود، در صورتی که قسمت CurrentUser در registry با login کردن user فعال می شود!
service account را به User تغییر دهید و در هنگام نصب username و password مربوط به User را وارد کنید، احتمالا مشکل برطرف خواهد شد

kiarash_h18
یک شنبه 27 اردیبهشت 1388, 10:31 صبح
احتمالا windows service را با account غیر از User نصب می کنید! توجه کنید که تنظیمات proxy مربوط به user است، به همین دلیل در registry در Registry.CurrentUser تنظیمات را اعمال می کنید. در صورتی که windows service را با LocalService یا LocalSystem نصب کنید، قبل از login کردن user و با بالا آمدن windows برنامه اجرا می شود، در صورتی که قسمت CurrentUser در registry با login کردن user فعال می شود!
service account را به User تغییر دهید و در هنگام نصب username و password مربوط به User را وارد کنید، احتمالا مشکل برطرف خواهد شد

از توجه شما ممنونم دوست عزيز.
مشكل از همين مسئله است كه شما مي فرماييد.
Account را به User تغيير دادم، ولي در موقع نصب در "Visual Studio 2008 Command Prompt" و با دستور "installutil" و بعد از وارد كردن Username و Password و Confirm Password با پيغام خطا مواجه ميشم و نصب انجام نمي شود ( همان UserName و Password ي را وارد ميكنم كه با آن در ويندوز وارد مي شوم ).

البته سيستمي كه من روي آن تست مي كنم تحت شبكه و دامين است و در زمان Login كردن با Username و Password تحت دامين Login ميكنم، در ضمن User هاي استفاده كننده اين برنامه نيز تحت دامين هستند.

لطفا راهنمايي بفرماييد.

kiarash_h18
یک شنبه 27 اردیبهشت 1388, 10:40 صبح
آقا مشكل حل شد.
در موقع نصب، در Username من بايد اسم دامين را قبل از User خودم وارد ميكردم، به اين صورت :

Username : DomainName\Account

rezavb6
دوشنبه 16 شهریور 1388, 19:12 عصر
YEK SOURCE MIKHAM KE BETONE PROXY TO IE 6 SET KONE HAR CHI SOURCE GRFTAM TO REGISTRY TAGHIR MIDAD AMA IE6 ON PROXY NMITONEST BEKHONE