Каким образом использовать HTTP и SOCKS прокси в C#

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Приветствую, искал тему чтоб посмотреть, так и не нашел.
Так как познаний в с шарп нет, хочу спросить как можно заюзать прокси в своем коде C#.
Есть например код

var resultHttpPost = ZennoPoster.HttpPost("https://auth.mail.ru/cgi-bin/auth", "Login={-Variable.login2-}&Domain=mail.ru&Password={-Variable.PASSWORD-}&new_auth_form=1&saveauth=1", "application/x-www-form-urlencoded", "", "utf-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);

return resultHttpPost;

Код для авторизации на маил, судя по описанию в справки к Зенопостеру, прокси вида например http//192.168.1.1:8080, нужно вставить перед "utf-8" и строка кода будет иметь вид

var resultHttpPost = ZennoPoster.HttpPost("https://auth.mail.ru/cgi-bin/auth", "Login={-Variable.login2-}&Domain=mail.ru&Password={-Variable.PASSWORD-}&new_auth_form=1&saveauth=1", "application/x-www-form-urlencoded", "http//192.168.1.1:8080", "utf-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);

Но не работает, не понятно в каком виде пихать и куда??????
или вот например код для отсылки маилов через Smtp серверы

var fromAddress = new System.Net.Mail.MailAddress(fromEmailString, name);
var toAddress = new System.Net.Mail.MailAddress(toEmailString, toEmailString);
// создаем подключение к почтовому серверу
var smtp = new System.Net.Mail.SmtpClient {
Host = server,
Port = port,
EnableSsl = encryptConnection,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential(login, password)
};
// создаем письмо
var message = new System.Net.Mail.MailMessage(fromAddress, toAddress) {
Subject = messageSubject,
Body = messageText,
IsBodyHtml = false,
};
// если у нас есть вложение, то добавляем его
if (!string.IsNullOrEmpty(fileToAttach))
{
var attach = new System.Net.Mail.Attachment(fileToAttach);
message.Attachments.Add(attach);
}
smtp.Send(message);
message.Dispose();


Как я понимаю обычный (экшен) квадратик относиться только к настройки браузера и ни каким местом не касается своего кода С. Так как же заставить работать прокси в своем коде С.???
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
неправильный формат прокси http//192.168.1.1:8080
правильно http://192.168.1.1:8080 или socks5://192.168.1.1:8080
 
  • Спасибо
Реакции: speaker

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
{-Variable.var-} это не конструкция для C#
Так правильно:
@"Login="+project.Variables["login2"].Value+@"&Domain=mail.ru&Password="+project.Variables["PASSWORD"].Value+@"&new_auth_form=1&saveauth=1"
 
  • Спасибо
Реакции: speaker

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
По поводу прокси просто с головы написал, так примеру, получается для установки прокси через переменную нужно тоже как
rostonix рекомендует "+project.Variables["proxy"].Value+@"
сейчас попробую, а в целом как юзать прокси в своем С коде, нет какой то универсальной строчки в коде, чтоб вставил и все заработало, как это происходит на экшенах квадратиках.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
То есть установка значений в виде http://192.168.1.1:8080 или socks5://192.168.1.1:8080
является, правильной и одинаковой что для своего кода С и квадратика (настройка браузера)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
  • Спасибо
Реакции: speaker

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
я хотел написать что использование конструкций в снипетах в виде {-Variable.var-} неприемлемо, но видел пару раз примеры и решил что раз люди так используют то значит все норм. А я все же не буду так делать. и считаю что програмисты зеновские в этом случае очередной раз сделали только хуже.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
Странные вещи происходят, если я вставляю в код С, прокси в виде http://192.168.1.1:8080, т.е получается
var resultHttpPost = ZennoPoster.HttpPost("https://auth.mail.ru/cgi-bin/auth", "Login="+project.Variables["login"].Value+@"&Domain=mail.ru&Password="+project.Variables["pas"].Value+@"&new_auth_form=1&saveauth=1", "application/x-www-form-urlencoded", "http://192.168.1.1:8080", "utf-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);

Все работает хорошо, а как только прокси заменю на "["proxy"]" или "+project.Variables["proxy"].Value+@"
шаблон весь расыпается ( т.е любой экшан, который идет за пуском начинает выдавать ошибку)
Чудо какое то, получается что один экшан Свой код С, влияет на все экшаны.
Так как же правильно прописать заместо http://192.168.1.1:8080, мою чудо переменную ({-Variable.proxy-}) чтоб все работало.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
я хотел написать что использование конструкций в снипетах в виде {-Variable.var-} неприемлемо, но видел пару раз примеры и решил что раз люди так используют то значит все норм. А я все же не буду так делать. и считаю что програмисты зеновские в этом случае очередной раз сделали только хуже.
оно не работает в ZP насколько я понимаю. В PM только если.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Просто project.Variables["proxy"].Value
Зачем вам там кавычки?
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
програмисты зеновские, круто сказано, если б знать как это правильно работает, то я бы делал как правильно, а по факту получается увидел снипер, вставил в шаблон, ура заработало, круто, и ни кто менять и вникать в работу не будет, работает и ладно, другое дело у меня, не фига не работает, вот я и спрашиваю, чего делать.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
В ПМ и не работает зараза какая, сутки сижу гадаю, вторые пошли, ну я побежу сто пудово.
Ок, сейчас попробую.
 

speaker

Client
Регистрация
13.10.2012
Сообщения
287
Благодарностей
45
Баллы
28
rostonix, вы заработали гигантскую шоколадину, заработало вроде как, я вот хрен знает нафига там кавычки, они там везде, и мне не понятно в каких случаях они должны там быть, а в каких нет.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Это C#
кавычки нужны для строковых значений.
но значения переменных и так строковое значение. обрамлять их кавычками не нужно
 
  • Спасибо
Реакции: speaker

djony

Client
Регистрация
17.12.2014
Сообщения
67
Благодарностей
9
Баллы
8
Это C#
кавычки нужны для строковых значений.
но значения переменных и так строковое значение. обрамлять их кавычками не нужно
rostonix подскажите,
чем отличается приведенный метод от автора
https://help.zennolab.com/en/v5/zennoposter/5.4/webframe.html#ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~HttpPost.html - его описание
и метод SetProxy
https://help.zennolab.com/en/v5/zennoposter/5.4/webframe.html#ZennoLab.CommandCenter~ZennoLab.CommandCenter.Instance~SetProxy(String,Int32,String,String,String).html
Цель назначить платные proxy через C#.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Методы ваще разные. Один для POST запроса, другой для установки прокси.
Не понимаю вопроса.
 
  • Спасибо
Реакции: djony

djony

Client
Регистрация
17.12.2014
Сообщения
67
Благодарностей
9
Баллы
8

Gizmond

Client
Регистрация
18.02.2017
Сообщения
270
Благодарностей
53
Баллы
28
Привет. Подскажите пожалуйста. Вообщем как правильно сделать отправку сообщения через СМТП с использованием прокси ,на основе данного кода.
Код:
// sender email
var fromEmailString = project.Variables["fromEmail"].Value;
// recipient
var toEmailString = project.Variables["toEmail"].Value;
// email login for authorization
var login = project.Variables["login"].Value;
// email password of the sender
var password = project.Variables["password"].Value;
// email server
var server = project.Variables["server"].Value;
// email port
int port;
int.TryParse(project.Variables["port"].Value, out port);
// enable SSL or not (for instance required for Gmail)
bool encryptConnection;
bool.TryParse(project.Variables["encryptedConnection"].Value, out encryptConnection);
// message
var messageText = project.Variables["messageBody"].Value;
// title
var messageSubject = project.Variables["messageSubject"].Value;
// attachment path, leave it empty in case you want to attach nothing
var fileToAttach = project.Variables["fileToAttach"].Value;
// format email headers
var fromAddress = new System.Net.Mail.MailAddress(fromEmailString, fromEmailString);
var toAddress = new System.Net.Mail.MailAddress(toEmailString, toEmailString);
// create connecting to the server
var smtp = new System.Net.Mail.SmtpClient {
                            Host = server,
                            Port = port,
                            EnableSsl = encryptConnection,
                            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
                            UseDefaultCredentials = false,
                            Credentials = new System.Net.NetworkCredential(login, password)
                        };
// create a message
var message = new System.Net.Mail.MailMessage(fromAddress, toAddress) {
                                        Subject = messageSubject,
                                        Body = messageText,
                                        IsBodyHtml = false,
                                    };
// if there is attachment we add it
if (!string.IsNullOrEmpty(fileToAttach))
{
    var attach = new System.Net.Mail.Attachment(fileToAttach);
    message.Attachments.Add(attach);
}
smtp.Send(message);
message.Dispose();
Написал шаблон по отправке почты на пост/гет запросах , там прокси вставляется в сам экш пост запроса в отдельной вкладке. Остальное все снифается и строятся запросы. Вообщем проблем не было. А как тут это организовать ? Подскажите пожалуйста. В С# вообще не разбираюсь. Заранее благодарен за ответы.
 
  • Спасибо
Реакции: orka13

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 702
Благодарностей
1 078
Баллы
113
Привет. Подскажите пожалуйста. Вообщем как правильно сделать отправку сообщения через СМТП с использованием прокси ,на основе данного кода.
Код:
// sender email
var fromEmailString = project.Variables["fromEmail"].Value;
// recipient
var toEmailString = project.Variables["toEmail"].Value;
// email login for authorization
var login = project.Variables["login"].Value;
// email password of the sender
var password = project.Variables["password"].Value;
// email server
var server = project.Variables["server"].Value;
// email port
int port;
int.TryParse(project.Variables["port"].Value, out port);
// enable SSL or not (for instance required for Gmail)
bool encryptConnection;
bool.TryParse(project.Variables["encryptedConnection"].Value, out encryptConnection);
// message
var messageText = project.Variables["messageBody"].Value;
// title
var messageSubject = project.Variables["messageSubject"].Value;
// attachment path, leave it empty in case you want to attach nothing
var fileToAttach = project.Variables["fileToAttach"].Value;
// format email headers
var fromAddress = new System.Net.Mail.MailAddress(fromEmailString, fromEmailString);
var toAddress = new System.Net.Mail.MailAddress(toEmailString, toEmailString);
// create connecting to the server
var smtp = new System.Net.Mail.SmtpClient {
                            Host = server,
                            Port = port,
                            EnableSsl = encryptConnection,
                            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
                            UseDefaultCredentials = false,
                            Credentials = new System.Net.NetworkCredential(login, password)
                        };
// create a message
var message = new System.Net.Mail.MailMessage(fromAddress, toAddress) {
                                        Subject = messageSubject,
                                        Body = messageText,
                                        IsBodyHtml = false,
                                    };
// if there is attachment we add it
if (!string.IsNullOrEmpty(fileToAttach))
{
    var attach = new System.Net.Mail.Attachment(fileToAttach);
    message.Attachments.Add(attach);
}
smtp.Send(message);
message.Dispose();
Написал шаблон по отправке почты на пост/гет запросах , там прокси вставляется в сам экш пост запроса в отдельной вкладке. Остальное все снифается и строятся запросы. Вообщем проблем не было. А как тут это организовать ? Подскажите пожалуйста. В С# вообще не разбираюсь. Заранее благодарен за ответы.
Ну так что, решение появилось, или есть другие варианты?
 

Everfex

Client
Регистрация
05.04.2019
Сообщения
5
Благодарностей
1
Баллы
3
Dell
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)