Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/67: Рейтинг темы: голосов - 67, средняя оценка - 4.82
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
1

Как использовать прокси при соединении

24.11.2012, 23:13. Показов 11979. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как использовать прокси при соединении? .__.
Пока код выглядит примерно так:

C#
1
2
3
4
5
6
7
IPEndPoint Server = new IPEndPoint(Server_IP, Server_Port); 
Socket Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
 
Client.Connect(Server); 
 
Client.Send(Request); 
Client.Receive(Response);
Но мне надо действовать через прокси, чтобы сервер не знал мой настоящий IP. Как это сделать?)

Добавлено через 12 секунд
П.С. Не надо огромных классов, как можно проще все сделать.
Надо отправить 1 пакетик, принять ответ и закрыть соединение. Комплит!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2012, 23:13
Ответы с готовыми решениями:

Использование прокси при соединении с сервером по TCP. Класс Socket
Как реализовать использование прокси в клиенте, чтобы тот соединялся с сервером по TCP и по...

Как использовать Прокси при отправке писем через MailMessage ?
Как использовать прокси при отправке письма через MailMessage ? (Использую в таком виде): ...

Пинг при соединении через прокси
Доброго времени суток! Устанавливаю с помощью проги proxyswitcher соединение через прокси, после...

Какой запрос нужно посылать прокси серверу при соединении с ним?
Какой запрос нужно посылать прокси серверу при соединении с ним?То есть как можно работать с прокси...

7
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
24.11.2012, 23:56 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class Proxy
    {
        public IPAddress ProxyIP { get; set; }
        public ushort ProxyPort { get; set; }
        public Proxy(string proxyIp, ushort proxyPort)
        {
            this.ProxyIP = IPAddress.Parse(proxyIp);
            this.ProxyPort = proxyPort;
        }
 
        public Socket GetConnection(string destIp, ushort desPort)
        {
            var client = new TcpClient();
            client.Connect(ProxyIP, ProxyPort);
            
            SendCommand(client.GetStream(), 0x01, destIp, desPort);
            return client.Client;
        }
 
        private void SendCommand(NetworkStream proxy, byte command, string destinationHost, ushort destinationPort)
        {
            byte[] destIp = IPAddress.Parse(destinationHost).GetAddressBytes();
            byte[] destPort = BitConverter.GetBytes(destinationPort).Reverse().ToArray();
            byte[] userIdBytes = { };
            byte[] request = new byte[9 + userIdBytes.Length];
 
            request[0] = 0x04;
            request[1] = command;
            destPort.CopyTo(request, 2);
            destIp.CopyTo(request, 4);
            userIdBytes.CopyTo(request, 8);
            request[8 + userIdBytes.Length] = 0x00;
 
            proxy.Write(request, 0, request.Length);
 
            Wait(proxy, 10000);
 
            byte[] response = new byte[8];
 
            proxy.Read(response, 0, 8);
            if (response[1] != 0x5A)
                throw new Exception("Connection error");
        }
 
        private void Wait(NetworkStream stream, int timeout)
        {
            int sleepTime = 0;
            while (!stream.DataAvailable)
            {
                Thread.Sleep(50);
                sleepTime += 50;
                if (sleepTime > timeout)
                    throw new TimeoutException();
            }
        }
    }
C#
1
2
Proxy proxy = new Proxy("58.211.138.27", 1080); //ip и порт прокси
Socket sock = proxy.GetConnection("195.211.131.72", 80); //к чему конектимся
2
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
25.11.2012, 00:19  [ТС] 3
Yukikaze, спасибо, но я уже решил.
Просто отправляю пакет не на сервер, а на прокси, и вместо:
POST /auth/login/? HTTP/1.1
ставлю:
POST http://site.ru/auth/login/ HTTP/1.1

Если это по каким-то причинам не правильно, напишите (если не затруднит )
0
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
25.11.2012, 01:52 4
ну если не учитывать тот факт, что вы используете сокет, но продолжаете использовать обычные HTTP прокси, то все нормально
1
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
25.11.2012, 11:31  [ТС] 5
Цитата Сообщение от Yukikaze Посмотреть сообщение
ну если не учитывать тот факт, что вы используете сокет, но продолжаете использовать обычные HTTP прокси, то все нормально
Можно по-подробнее? А то я нуб.
Какие могут быть последствия? @_@
0
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
25.11.2012, 14:42 6
sooqua, последствий никаких, просто зачем использовать сокет для HTTP запросов, вместо предназначенного для этого класса HttpWebRequest, но не использовать его преимуществ.
Проще сделать так
C#
1
2
3
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com/");
request.Proxy = new WebProxy("ip:port");
HttpWebResponce responce = (HttpWebResponce)request.GetResponce();
при этом не надо вручную собирать хедеры
1
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
25.11.2012, 14:48  [ТС] 7
В моём случае HttpWebRequest не подходит)
Спасибо за ответы! Тему можно клоуз
0
Почетный модератор
21415 / 9150 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
25.11.2012, 18:31 8
Цитата Сообщение от sooqua Посмотреть сообщение
Тему можно клоуз
Этого не позволяют Рулез
3
25.11.2012, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2012, 18:31
Помогаю со студенческими работами здесь

Как использовать староние прокси?
Как использовать староние прокси? Пробывал так procedure proxy_go(proxy: string); var...

Webbrowser, как использовать прокси
Всем привет как можно передать из Edit прокси в webbrowser procedure proxy(text:string); var...

Как использовать прокси в POST запросе
Приветствую, столкнулся с проблемой. Не понимаю как использовать прокси в пост запросе. Начнем:...

Awesomium. Как использовать прокси и сменить UserAgent?
Как изменить User Agent? Как использовать прокси? Хочу сделать так: нажал на кнопку - изменился...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru