Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

C# Натянуть HTTP проксик на WebBrowser

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 25.11.2013, 18:37   #1
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию C# Натянуть HTTP проксик на WebBrowser

Возникла необходимость пробежаться списком проксей по WEB страничке, где выполняется JS ( собирается URL и отправляет параметр данные дальше )

Решил использовать WebBrowser, собственно тут проблемка с subj-ом и началась, не могу натянуть прокси и пройти авторизацияю.

Из найденных способов нашел вариант - лезть в реестр и менять там данные, но с авторизацией вопрос так и не решился.
Был найден вариант юзать уже установленный в IE проксятник ( но у нас они постоянно будут меняться ). Вариант тоже отпал.

Установил компонент Skybound Geko, всё бы ничего - но сцуко не даёт авторизоваться HTTP проксятник.

Помогите добрым словом или куском кода..
  Ответить с цитированием
Старый 25.11.2013, 19:07   #2
 Разведчик
Аватар для NerdyCodingKid
 
NerdyCodingKid на правильном путиNerdyCodingKid на правильном пути
Регистрация: 18.11.2013
Сообщений: 3
Популярность: 197
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 9 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Взболтну на удачу: Как насчёт плагина под хром/мозиллу?
  Ответить с цитированием
Старый 25.11.2013, 19:11   #3
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Хочется сделать красиво, без костылей..
Я уверен что задачка решаема..

Кстать, забегу за ранее.. была мысль посмотреть этот JS собрать URL по кускам - но это правда тот ещё геморой, проще прогрузить страницу и дать JS -у отработать своё под забитым проксятником..
  Ответить с цитированием
Старый 25.11.2013, 19:42   #4
 Разведчик
Аватар для NerdyCodingKid
 
NerdyCodingKid на правильном путиNerdyCodingKid на правильном пути
Регистрация: 18.11.2013
Сообщений: 3
Популярность: 197
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 9 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Ну, если по-чесноку, то можно это сотворить прямо из C#. Есть такое страшилище, которое зовётся "[Ссылки могут видеть только зарегистрированные пользователи. ]". [Ссылки могут видеть только зарегистрированные пользователи. ]. Авось получится вычленить js-ку и запустить.
  Ответить с цитированием
Старый 25.11.2013, 20:19   #5
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Код:
Public struct Struct_INTERNET_PROXY_INFO 
{ 
    public int dwAccessType; 
    public IntPtr proxy; 
    public IntPtr proxyBypass; 
}; 

[DllImport("wininet.dll", SetLastError = true)] 
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

private void RefreshIESettings(string strProxy) 
{ 
    const int INTERNET_OPTION_PROXY = 38; 
    const int INTERNET_OPEN_TYPE_PROXY = 3; 

    Struct_INTERNET_PROXY_INFO struct_IPI; 

    // Filling in structure 
    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY; 
    struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy); 
    struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local"); 

    // Allocating memory 
    IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI)); 

    // Converting structure to IntPtr 
    Marshal.StructureToPtr(struct_IPI, intptrStruct, true); 

    bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI)); 
} 

private void SomeFunc() 
{ 
    RefreshIESettings("192.168.1.200:1010"); 

    System.Object nullObject = 0; 
    string strTemp = String.Empty; 
    System.Object nullObjStr = strTemp;
    axWebBrowser1.Navigate("http://willstay.tripod.com", ref nullObject, ref nullObjStr, ref nullObjStr, ref nullObjStr); 
}

RefreshIESettings("127.0.0.1:3128");
webBrowser1.Navigate("http://www.myip.ru/en-EN/index.php", "_self", null, "User-Agent: Custom User Agent string\r\nReferer: [Ссылки могут видеть только зарегистрированные пользователи. ] Basic dXNlcjpragzZg==");

По сути прошел бейс авторизацию в хидере в проксике авторизовался..
запрос выполнился, но одно***ственно, windows попросил меня ввеси данные прокси, для авторизации..

можно ли как нибудь обойти?


[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось slejpni; 26.11.2013 в 08:42. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 26.11.2013, 13:32   #6
 Разведчик
Аватар для NerdyCodingKid
 
NerdyCodingKid на правильном путиNerdyCodingKid на правильном пути
Регистрация: 18.11.2013
Сообщений: 3
Популярность: 197
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 9 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Попробуй [Ссылки могут видеть только зарегистрированные пользователи. ] со строчки "Существует несколько способов обработки HTTP_STATUS_PROXY_AUTH_REQ без отображения пользовательского интерфейса"
  Ответить с цитированием
Старый 26.11.2013, 22:41   #7
Повелитель кодеров
 Главнокомандующий
Аватар для vokovl
 
vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(vokovl сломал счётчик популярности :(
Регистрация: 14.04.2010
Сообщений: 1,058
Популярность: 128648
Сказал(а) спасибо: 588
Поблагодарили 1,851 раз(а) в 1,105 сообщениях
Отправить сообщение для vokovl с помощью Skype™
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

а, так разве не проще пакетами, а прокси считывать из текстовика циклом??

________________
Я - часть той силы, что вечно хочет зла и вечно совершает благо.
Если вы думаете, что став модером, вы не сможете тролить,вы ошибаетесь, теперь вы тролите всех своим существованием
случайность - визитная карточка бога.
Жизнь слишком коротка, чтобы волноваться о том, что о тебе подумают или скажут люди
  Ответить с цитированием
Старый 27.11.2013, 00:21   #8
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Цитата:
Сообщение от vokovlПосмотреть сообщение
а, так разве не проще пакетами, а прокси считывать из текстовика циклом??

Так веббраузер только для того что бы не выполнять JS...
  Ответить с цитированием
Старый 27.11.2013, 07:23   #9
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Цитата:
Сообщение от SinyssПосмотреть сообщение
Так веббраузер только для того что бы не выполнять JS...

Точней, что бы выполнить..

Цитата:
а, так разве не проще пакетами, а прокси считывать из текстовика циклом??


ммм, попробую обьяснить задачку ещё раз, на страничке размещён хитровыебанный JS, который определяет по DOM -у полноценность нашего браузера. Конечно можно было бы разобрать JS и постараться с эмулировать запрос - но хочется решить всё менее геморойно.

Вот и пришла мысль использовать WebBrowser, что-бы с эмулить полноценно запрос и не париться.


Немного об успехах, ручное редактирование заголовков (вставка авторизации для прокси )позволила мне послать только один запрос через проксятник, все остальные запросы шлются уже без этого хиддера...
по тому и всплывает Windows окно с просьбой авторизоваться у проксика.

Касательно генерации списков IP - накидал функцию, может кому пригодится.
Собственно ничего сложного, но мне пришлось помучаться из за незнания синтаксиса C# при работе с переменными..


generate_proxy
Код:
 static List<string> generate_proxy(string d1, string d2)
        {
            var list = new List<string>();
            int dest = Convert.ToInt32(ToInt(d2) - ToInt(d1)) + 1;

            for (int i = 0; i < dest; i++)
            {
                long ip = ToInt(d1) + i;
                list.Add(ToAddr(ip).ToString());
            }
            return Randomize(list);
        }
Кстать, в perl -е это выглядело у меня так ))) :

Код:
sub gen_proxy
{
	@arr = (unpack('N',pack('C4',split(/\./, $_[0])))..unpack('N',pack('C4',split(/\./, $_[1]))));
	return @arr;
}
Функции для прогонки ( ToAddr и ToInt ) IP в INT и обратно нашел на просторах сети.

Код:
        static long ToInt(string addr)
        {
            return (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse(addr).Address);
        }
Код:
        static string ToAddr(long address)
        {
            return IPAddress.Parse(address.ToString()).ToString();
        }


Генерим листы с диапазоном IP:

Код:
            List<string> d1 = generate_proxy("192.168.1.1", "192.168.1.254");
            List<string> d2 = generate_proxy("192.168.0.1", "192.168.0.254");
  Ответить с цитированием
Старый 27.11.2013, 07:29   #10
 Разведчик
Аватар для NerdyCodingKid
 
NerdyCodingKid на правильном путиNerdyCodingKid на правильном пути
Регистрация: 18.11.2013
Сообщений: 3
Популярность: 197
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 9 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

А с этим не получилось? Там ведь описано как добиться настройки интернетов без появления этого окошка.
  Ответить с цитированием
Старый 27.11.2013, 07:39   #11
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Цитата:
Сообщение от NerdyCodingKidПосмотреть сообщение
Попробуй [Ссылки могут видеть только зарегистрированные пользователи. ] со строчки "Существует несколько способов обработки HTTP_STATUS_PROXY_AUTH_REQ без отображения пользовательского интерфейса"


Большое спасибо за комментарии!

В общем, вариант с JS отпал, так как хитровыебанный скрипт проверяет DOM у браузера и выдирает от туда реферер.
Возиться со скриптом и пытаться поделать генерируемые им параметры тот ещё геморой =(

Зато, HTTP_STATUS_PROXY_AUTH_REQ - подкинуло на новые размышления, наткнулся по ходу на другие статьи..

Попытался модернизировать функцию RefreshIESettings и пройти авторизацию

Код:
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_USERNAME, Marshal.StringToHGlobalAuto(strUsername), strUsername.Length + 1);
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_PASSWORD, Marshal.StringToHGlobalAuto(strPassword), strPassword.Length + 1);

Но опять без успешно..

Уже задумываюсь о костылях, отлавливать окно с запросом авторизации и вбивать в форму данные.


Добавлено через 8 минут
Цитата:
Сообщение от NerdyCodingKidПосмотреть сообщение
А с этим не получилось? Там ведь описано как добиться настройки интернетов без появления этого окошка.


Увы, я изначально облажался - думая что запрос прошел.. раз я подделал заголовки, для авторизации..

В итоге получилась такая хрень:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Первый запрос я делаю под проксятником, а к сгенерированным JS ссылкам я уже обращаюсь под своим, белым IP

Последний раз редактировалось slejpni; 27.11.2013 в 07:48. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 27.11.2013, 07:52   #12
 Разведчик
Аватар для NerdyCodingKid
 
NerdyCodingKid на правильном путиNerdyCodingKid на правильном пути
Регистрация: 18.11.2013
Сообщений: 3
Популярность: 197
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 9 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

В общем, не мучай ни себя, ни других - сделай плагин под браузер который сам и прокси поставит и на страницу перейдёт.
  Ответить с цитированием
Старый 27.11.2013, 07:57   #13
 Разведчик
Аватар для slejpni
 
slejpni никому не известный тип
Регистрация: 01.03.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# Натянуть HTTP проксик на WebBrowser

Цитата:
Сообщение от NerdyCodingKidПосмотреть сообщение
В общем, не мучай ни себя, ни других - сделай плагин под браузер который сам и прокси поставит и на страницу перейдёт.

Печально на самом деле, ибо всё упирается только в авторизацию проксятника, а остальное всё уже готово..

Но тем не менее спасибо ещё раз за советы, весьма признателен!
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] WebBrowser+Proxy RamDigga Вопросы и ответы, обсуждения 0 09.09.2013 20:06
[Прочее] Отдаю проксии базы. Anton52rus Халява для Читера 7 02.05.2013 22:45
работа с webbrowser oknoza Вопросы и ответы, обсуждения 4 25.02.2013 19:20
Перехват в WebBrowser Skrillex3 Вопросы и ответы, обсуждения 27 18.05.2012 00:25

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:22.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net