Однажды, во время написания тестов для проекта, столкнулся с проблемой, что при отправке HTTP запроса все время получал ответ, что запрос не был отправлен.
Причина тому была в использовании компанией proxy сервера.
Рассмотрим несколько простых способов, как подключить прокси-сервер в коде.
Подключение прокси-сервера в Python
До внесения изменений, наша программа просто выполняла GET запрос.
>>> import requests
>>> a = requests.get("https://nowadays.name")
Чтобы запрос проходил через прокси, необходимо добавить следующие строчки:
>>> import os
>>> os.environ['http_proxy'] = 'proxy_name:port'
Пример:
>>> import requests
>>> import os
>>> os.environ['http_proxy'] = 'proxy.nowadays.name:8080'
>>> a = requests.get("https://nowadays.name")
Подключение прокси-сервера в C#
Пример кода для получения страницы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
WebRequest a = WebRequest.Create("https://nowadays.name");
using (WebResponse b = a.GetResponse())
{
using (StreamReader reader = new StreamReader(b.GetResponseStream(), Encoding.UTF8))
{ string content = reader.ReadToEnd(); }
}
}
}
}
И чтобы наш запрос в данном случае шел через прокси-сервер, мы можем глобально подключить прокси:
System.Net.GlobalProxySelection.Select = new WebProxy("proxy_name", port);
либо передать его в классе WebRequest:
WebProxy proxy = new WebProxy("proxy_name", port);
a.Proxy = proxy;
И тогда, код программы будет выглядеть следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
WebRequest a = WebRequest.Create("https://nowadays.name");
WebProxy proxy = new WebProxy("proxy.nowadays.name", 8080);
a.Proxy = proxy;
using (WebResponse b = a.GetResponse())
{
using (StreamReader reader = new StreamReader(b.GetResponseStream(), Encoding.UTF8))
{ string content = reader.ReadToEnd(); }
}}}}