Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2015, 10:52   #11
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

https://support.microsoft.com/ru-ru/kb/819961
Этот способ не годится, он меняет для всех браузеров proxy, а нужно для IE изменить. Есить способы на C# или Delphi, значит должны быть и для MFC, где то пишут в реесстре нужно менять для ие
ninja2 вне форума Ответить с цитированием
Старый 29.08.2015, 11:47   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Что за способы-то на C# или Delphi?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.08.2015, 12:08   #13
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что за способы-то на C# или Delphi?
от посоветовали на С# на msdn.
Та от я журнал ИЕ удаляю с помощью WinInet функци
Код:
InternetSetOption(NULL, INTERNET_OPTION_END_BROWSER_SESSION, NULL, 0)
Удаляет как бы журнал, а от если вызывать функцию
InternetSetOption которая установит прокси, то мб. и в WebBrowser поменяется хз.

Вроде пишут что WebBrowser использует WinInit и типо в нем меняют прокси и в WebBrowser меняется. Что такое WinInet не знаю, если это класс, то толку что мы поменяем там настройки, а если это элемент как бы управления, то если поменяем и они сохранятся мб. и получится???

Нада попробовать как то через WinInet поменять, на одном с делфи форумов там писали что через него менял чувак, там ссылка была, но она недоступна чтобы код глянуть, пишут что типо работает, потому что ИЕ использует не сокеты а WinInit.

Кто знает как изменить через WinInet прокси? Ниче не ясно, щас в книге гляну, там вроде есть раздел интернет и за WinIen написано что это такое.

WinInet - это апи, наверно для управления интернетом, от тут наверно нужно и искать. Да если на С# можно сделать, то и на MFC более низком уровне это можно тоже сделать, только знать как. Задолбало все время гуглить. MFC похоже костыль редкий, наверно как линукс костыль и виндовс, то же самое C# и MFC примерно сравнение

Последний раз редактировалось ninja2; 29.08.2015 в 12:12.
ninja2 вне форума Ответить с цитированием
Старый 29.08.2015, 12:28   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
от посоветовали на С# на msdn.
Странный способ, по-моему там предлагают просто выполнить запрос обычным HTTP клиентом, а потом в браузере вывести результат.


Про InternetSetOption, вроде INTERNET_OPTION_PER_CONNECTION_OPTI ON делает почти тоже самое, как если самому в реестре прописать, то есть тоже глобальные настройки.

Но вот пример кода если что (немного поправленный с http://www.codeproject.com/Articles/...oxy-settings):
Код:
BOOL SetConnectionOptions(LPCTSTR conn_name,LPCTSTR proxy_full_addr)
{
    //conn_name: active connection name.
    //proxy_full_addr : eg "210.78.22.87:8000"
    INTERNET_PER_CONN_OPTION_LIST list;
    BOOL      bReturn;
    DWORD   dwBufSize = sizeof(list);
    // Fill out list struct.
    list.dwSize = sizeof(list);
    // NULL == LAN, otherwise connectoid name.
    list.pszConnection = (LPTSTR)conn_name;
    // Set three options.
    list.dwOptionCount = 3;
    list.pOptions = new INTERNET_PER_CONN_OPTION[3];
    // Make sure the memory was allocated.
    if(NULL == list.pOptions)
    {
        // Return FALSE if the memory wasn't allocated.
        //OutputDebugString("failed to allocat memory in SetConnectionOptions()");
        return FALSE;
    }
    // Set flags.
    list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
    list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
        PROXY_TYPE_PROXY;

    // Set proxy name.
    list.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
    list.pOptions[1].Value.pszValue = (LPTSTR)proxy_full_addr;//"http://proxy:80";

    // Set proxy override.
    list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
    list.pOptions[2].Value.pszValue = "local";

    // Set the options on the connection.
    bReturn = InternetSetOption(NULL,
        INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);

    // Free the allocated memory.
    delete [] list.pOptions;
    InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
    InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
    return bReturn;
}
BOOL DisableConnectionProxy(LPCTSTR conn_name)
{
    //conn_name: active connection name.
    INTERNET_PER_CONN_OPTION_LIST list;
    BOOL      bReturn;
    DWORD   dwBufSize = sizeof(list);
    // Fill out list struct.
    list.dwSize = sizeof(list);
    // NULL == LAN, otherwise connectoid name.
    list.pszConnection = (LPTSTR)conn_name;
    // Set three options.
    list.dwOptionCount = 1;
    list.pOptions = new INTERNET_PER_CONN_OPTION[list.dwOptionCount];
    // Make sure the memory was allocated.
    if(NULL == list.pOptions)
    {
        // Return FALSE if the memory wasn't allocated.
        // OutputDebugString("failed to allocat memory in DisableConnectionProxy()");
        return FALSE;
    }
    // Set flags.
    list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
    list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT   ;
    // Set the options on the connection.
    bReturn = InternetSetOption(NULL,
        INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
    // Free the allocated memory.
    delete [] list.pOptions;
    InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
    InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
    return bReturn;
}

int main(int argc, char* argv[])
{ 
    const char* connection_name = "DefaultConnectionSettings";
    SetConnectionOptions(connection_name, ip);
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.08.2015, 21:57   #15
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Все получилось, меняет прокси на ура ))
Цитата:
Про InternetSetOption, вроде INTERNET_OPTION_PER_CONNECTION_OPTI ON делает почти тоже самое, как если самому в реестре прописать, то есть тоже глобальные настройки.
Да глобальные настройки меняет, от тут такой же пример как у тебя есть

Но он так же само как в ручную редактируешь реестр работает, я этот код проверил, так же как мой работает браузер не видит изменений. Твой код не проверял, потом на твой глянул и там у тебя две функции есть
Код:
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
Добавил их и все стало нормально. Потом функцию удалил что там на MSDN, вручную реестр меняешь настройки и эти две функции вызываешь и браузер видит изменения. Все норм работает

За WinInit все рамно не ясно что это такое, ну пофигу, главное что работает. Лучше вручную менять меньше кода чем функцией.
Я еще журнал ИЕ удалял этой функцией
Код:
InternetSetOption(NULL, INTERNET_OPTION_END_BROWSER_SESSION, NULL, 0)
и программу нужно было закрыть и открыть тогда видел что куки удалились. Щас попробую эти две функции после вызвать браузер мб. сразу удалит куки без закрытия.

WinInit там куча всяких макросов, тут, хз. как их вызывать и что они дают. Ну пофигу главное что заработало, на фанарь заработало.

Последний раз редактировалось ninja2; 29.08.2015 в 22:04.
ninja2 вне форума Ответить с цитированием
Старый 29.08.2015, 22:03   #16
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Еще бы звук щелчка в браузере удалить как то

Вычитал что еще можно добавить INTERNET_OPTION_SEND_TIMEOUT как в curl, типо если больше там 10 секунд загружается страница то соединение прерывается, а куда записывать время???

Цитата:
INTERNET_OPTION_SEND_TIMEOUT

5

Устанавливает или получает неподписанный длинное целое значение в миллисекундах, который содержит значение тайм-аута, чтобы послать запрос. Если отправка занимает больше времени, чем это значение времени ожидания, то отправить отменяется. Эта опция может быть использована на любом HINTERNET ручкой, в том числе NULL ручкой. Он используется InternetQueryOption и InternetSetOption.

При использовании в ссылкой на FTP транзакции, этот параметр относится к каналу управления.
LPVOID - это указатель на void far* , а что это такое???
делаю так InternetSetOption(NULL, INTERNET_OPTION_SEND_TIMEOUT , (LPVOID)1, 0); , вроде не работает, 1 милисекунда ниче наверно не должно загружать, или что то я не так понял.
Ладно пофигу, время это вручную можно определить и stop() вызвать.

Последний раз редактировалось ninja2; 29.08.2015 в 22:45.
ninja2 вне форума Ответить с цитированием
Старый 07.09.2015, 23:16   #17
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

А как сделать многопоточную программу? У меня есть в файле 1к прокси и нужно хотябы 10 потоков создать и в каждом потоке должен быть свой прокси. Так как меняется в данном случае айпи не годится, он полностью меняется для виндовс, а мне нужно изменить для определенного потока, как так сделать?

Ну то есть мне нужно изменить его для браузера ИЕ7, я если меняю через реестр, то у меня меняется для всех браузеров, а как сделать чтобы менялось только для ИЕ7 прокси????

Похоже WebBrowther для этого не подойдет да? Нужно что то другое использовать типа Phantomjs да .

Чувак запускал прогу в 100 потоков с ротацией прокси и использовал PhantomJS и все у него норм работало, а у меня не получается нормально прокси поменять в WebBrowther ппц.

Последний раз редактировалось ninja2; 07.09.2015 в 23:20.
ninja2 вне форума Ответить с цитированием
Старый 08.09.2015, 12:17   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нужно что то другое использовать типа Phantomjs да .
Нужно использовать способ, описанный мной по ссылке выше )
Тот, который ты так быстро отверг. А ведь в нем как раз описывается условия подбора проксика.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2015, 13:07   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

PAC что ли? Так у него наверно один URL во всех экземлярах браузера, как ему это поможет?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.09.2015, 13:21   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
у него наверно один URL во всех экземлярах браузера, как ему это поможет?
Во-первых, как я понимаю его прога может сформировать этот РАС динамически для каждого подключения. Бред конечно но мало ли, я так и не понял до конца что ТС хочет. Во-вторых я думал что у него для разных URL разные проксики нужны.
или ТС хочет а-ля анонимный ботнет, чтоб флудить сеть с разных проксей?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XE5 webbrowser прокси с авторизацией albionseo Компоненты Delphi 2 02.01.2015 11:34
Delphi Webbrowser прокси с авторизацией nikita321 Общие вопросы Delphi 0 13.01.2013 17:33
Webbrowser анонимные прокси Diman007858 Общие вопросы Delphi 0 31.05.2012 05:11
Webbrowser анонимные прокси Diman007858 Работа с сетью в Delphi 0 31.05.2012 05:11
смена прокси embedded (webBrowser) Romer9999 Работа с сетью в Delphi 1 30.05.2010 12:22