https://goo.gl/4JbeYW
خب وقتی پروکسی سرور خودتون رو راه انداختین باید کاری کنین که تمام درخواست های وبسایت شما (مثلا درخواست ارسال نوتیفیکشن تلگرام) از طریق پروکسی سرور شما ارسال بشه نه توسط خود وبسایتتون (یعنی Default Proxy پروژه تون رو عوض کنین)
تو NetFramework Full به صورت زیر عمل میکردیم
WebRequest.DefaultWebProxy = new WebProxy("http://127.0.0.1:9050", BypassOnLocal: true) { UseDefaultCredentials = true };
- فیلد BypassOnLocal مشخص میکنه که درخواست های local (محلی) از طریق پروکسی عبور نکنه و مستقیما ارسال بشه.- توسط خاصیت BypassList و BypassArrayList میشه لیستی از ادرس هایی رو مشخص کرد که برای درخواست اونها اون ها پروکسی استفاده نشه.
- خاصیت UseDefaultCredentials مشخص میکنه که از Credentials پیشفرض استفاده کنه که در حالت عادی یعنی Username و Password جهت احراز هویت پروکسی سرور ارسال نمیشه.
- اگه پروکسی سروو شما دارای Username و Password باشه باید اون رو داخل خاصیت Credentials شی WebProxy ست کنین.
WebRequest.DefaultWebProxy = new WebProxy("http://127.0.0.1:9050", BypassOnLocal: true) { Credentials = new NetworkCredential("username", "password") };
ست کردن مقدار WebRequest.DefaultWebProxy باعث میشه پروکسی پیشفرض پروژه تغییر کنه و از این به بعد تمام درخواست ها (به جز Local به دلیل Bypass در این مثال) از طریق پروکسی ارسال و دریافت بشه.همچنین مشابه تنظیمات بالا رو میتونین از طریق WebConfig به صورت زیر انجام بدین
<configuration>
<system.net>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:9050" bypassonlocal="true" usesystemdefault="true"/>
</defaultProxy>
</system.net>
</configuration>
اما این روش (DefaultProxy) باعث میشه درخواست های کل سیستم از طریق پروکسی ارسال و دریافت بشهدرصورتی که نیاز دارین فقط برای یک درخواست خاص (مثل ارسال نوتیفیکیشن توسط api تلگرام) از پروکسی استفاده کنین و نه تمام درخواست ها
باید به صورت زیر عمل کنین
WebProxy proxy = new WebProxy("http://127.0.0.1:9050",true);
WebRequest request = WebRequest.Create("http://www.contoso.com");
request.Proxy = proxy;
_______________