Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Смена прокси Добавлено: 01.09.04 00:49  

Автор вопроса:  TERMIT | Web-сайт: xtec.ru | ICQ: 5297101 
Народ...о великие програмеры пожалуйсто помоги плиз....короче надо пример или что то в этом роде......короче надо програмно сменить http прокси на браузере IE.....плиз помогите очень надо.........

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #1
Добавлено: 01.09.04 11:18
Вот мой модуль для смены прокси, а как работать с ним, думаю, разберешься сам (просто посмотри в реестр):
------------
' DaSharm (dasharm@mail.ru) ICQ: 2068093
Public Type VBRasEntryName
   entryname As String
   Win2000_SystemPhonebook As Boolean
   PhonebookPath As String
End Type
Private Declare Function RasEnumEntries Lib "rasapi32.dll" Alias "RasEnumEntriesA" (ByVal lpStrNull As String, ByVal lpszPhonebook As String, lpRasEntryName As Any, lpCb As Long, lpCEntries As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As Any, ByVal cbData As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function GetRecord(RecName As String, ProxyString() As Byte) As Long
    ;Dim hOpen As Long, hBuff() As Byte, lDataBufSize As Long
    If Not RegOpenKeyEx(&H80000001, "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet settings\connections", 0&, &H3F, hOpen) = 0& Then Exit Function
    If Not RegQueryValueEx(hOpen, RecName, 0&, 1, ByVal 0&, lDataBufSize) = 0& Then Exit Function
ReDim hBuff(lDataBufSize)
    If Not RegQueryValueEx(hOpen, RecName, 0, 3, hBuff(0), lDataBufSize) = 0& Then Exit Function
    Call RegCloseKey(hOpen)
ProxyString = hBuff
GetRecord = lDataBufSize
End Function
Public Sub SetRecord(RecName As String, ProxyString() As Byte)
Dim hKey As Long
 RegOpenKeyEx &H80000001, "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet settings\connections", 0, &H3F, hKey
 RegSetValueEx hKey, RecName, 0&, &H3, VarPtr(ProxyString(0)), UBound(ProxyString)
End Sub
Public Function VBRasGetAllEntries(clsRasEntryName() As VBRasEntryName, Optional strPhoneBook As String) As Long
   ;Dim rtn As Long, i As Long
   ;Dim lpCb As Long
   ;Dim lpCEntries As Long
   ;Dim b() As Byte
   ;Dim strTemp As String
   ;Dim dwSize As Long
   ;Dim lngLen As Long
   ;Dim lngBLen As Variant
   ReDim b(3)
   lngBLen = Array(532&, 264&, 28&;)
   For i = 0 To 2
      CopyMemory b(0), CLng(lngBLen(i)), 4
      rtn = RasEnumEntries(vbNullString, strPhoneBook, _
             b(0), lpCb, lpCEntries)
      If rtn <> 632 Then Exit For
   Next i
   VBRasGetAllEntries = lpCEntries
   If lpCEntries = 0 Then Exit Function
   dwSize = lpCb \ lpCEntries
   ReDim b(lpCb - 1)
   CopyMemory b(0), dwSize, 4
   rtn = RasEnumEntries(vbNullString, strPhoneBook, b(0), lpCb, lpCEntries)
   strTemp = String(dwSize - 4, 0)
   ReDim clsRasEntryName(lpCEntries - 1)
   If dwSize = 28 Then lngLen = 21 Else lngLen = 257
   For i = 0 To lpCEntries - 1
     CopyMemory ByVal strTemp, b((i * dwSize) + 4), lngLen
     clsRasEntryName(i).entryname = _
            Left(strTemp, InStr(strTemp, Chr$(0)) - 1)
   Next i
   If dwSize > 264 Then
      For i = 0 To lpCEntries - 1
        CopyMemory clsRasEntryName(i).Win2000_SystemPhonebook, _
                b((i * dwSize) + 264), 2&
        CopyMemory ByVal strTemp, b((i * dwSize) + 268), 260&
        clsRasEntryName(i).PhonebookPath = _
         Left(strTemp, InStr(strTemp, Chr$(0)) - 1)
      Next i
   Else
      For i = 0 To lpCEntries - 1
         clsRasEntryName(i).PhonebookPath = strPhoneBook
      Next i
   End If
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 01.09.04 14:59
2 DaSharm: если открыт IE, и запустить твой код, то прокси будет
сменен сразу или только после перезапуска IE?

Ответить

Номер ответа: 3
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #3
Добавлено: 01.09.04 16:12
Только после перезапуска, я и сам не смог сделать смену при запущенном ИЕ. А было бы приколько...например, чтобы отлавливать НТТР пакеты в запущенного ИЕ...

Ваще-то, когда я разбирался с тем, как применить проксю к работающему компоненту WebBrowser (при написании НТТР отладчика), то я понял, что все дело выполняет API InternetSetOption, но она действует в пределах одного приложения, например, когда я изменю проксю в своей проге, то на ИЕ это не повлияет, только на мою прогу. А сам InternetSetOption может вызываться с тремя флагами: отключить проксю, указать проксю, установить проксю пользуясь записями реестра. ИЕ использует последний флаг, потому надо изменять значение ключа в реестре.

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 01.09.04 16:36
Но ведь некоторые программы умеют менять это на лету, например
Naviscope. Как они это делают?
Меня этот вопрос уже давно мучает, ибо хочется сделать опцию быстрого
включения прокси в одной проге...

Ответить

Номер ответа: 5
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #5
Добавлено: 01.09.04 18:06
Naviscope?НЕ слышал, но если такова существует, то нужно продолжать исследования, займусь этим, если будет свободное время, ато так шас впадло, вернулся с 2-х недельного отдыха в Польше, комп включать не хочу даже...

Ответить

Номер ответа: 6
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #6
Добавлено: 01.09.04 20:35
мда....блин а как ну ты говорил в передлах твоей проги мне так и надо....только короче прога ну для подбора пассов но там есть загвоздка блин короче ну прокси нужно менять полюбак а то твой айпи блочат....блин проше вас помогите а то придеться на скриптах писать а так впадлу :).......

Ответить

Номер ответа: 7
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #7
Добавлено: 01.09.04 21:38
Лучше напиши опиши конкретно, тогда я помогу. Для подбор пассов по НТТР, думаю, лучше использовать отправку НТТР пакетов нежели юзать ВебБровзер...

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 02.09.04 14:18
Naviscope - это такой прокси с некоторыми полезными функциями вроде
обрубания рекламы... Скачай, посмотри, он меньше мегабайта весит.

Ответить

Номер ответа: 9
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #9
Добавлено: 02.09.04 15:53
Посмотрю, но, может быть, он использует перехват АПИ...Посмотрю в APIMonitor'e...

Ответить

Номер ответа: 10
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #10
Добавлено: 02.09.04 20:25
дык я понимаю что пакетами было бы лучше гы только на это есть свои причины вот так ну корчое надо именно так мне зделать....

Ответить

Номер ответа: 11
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #11
Добавлено: 03.09.04 16:26
Ну эсли проксю в своей проге изменять, то вот кусок кода из моего НТТР отладчика, меняющий проксю.
'---------------
'HTTPDbg DaSharm ICQ:2068093
'---------------
Private Type INTERNET_PROXY_INFO2
    dwAccessType As Long
    lpszProxy As String
    lpszProxyBypass As String
End Type
Private Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, ByRef lpBuffer As Any, ByVal dwBufferLength As Long) As Long
Public Function ApplyProxy(Inject As Boolean) As Long
    ;Dim strServers As String
    ;Dim strBuffer As String
    ;Dim ProxyInfo As INTERNET_PROXY_INFO2
strBuffer = "socks=127.0.0.1:44 https=127.0.0.1:44 http=127.0.0.1:44 " & _
            "gopher=127.0.0.1:44 ftp=127.0.0.1:44"
strServers = RTrim$(strBuffer)
 If Inject = True Then ProxyInfo.dwAccessType = 3 Else ProxyInfo.dwAccessType = 1
       ProxyInfo.lpszProxy = strServers
       ProxyInfo.lpszProxyBypass = ""
ApplyProxy = InternetSetOption(0&, 38, ProxyInfo, LenB(ProxyInfo))
End Function
'-----------------

Использование:
ApplyProxy true ' Выставить проксю 127.0.0.1:44
ApplyProxy false ' Вернуть по умолчанию

Ответить

Номер ответа: 12
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #12
Добавлено: 03.09.04 20:08
не понял как это кусок тоесть не все?

Ответить

Номер ответа: 13
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #13
Добавлено: 03.09.04 20:52
тоесть в моем НТТР отладчике ещё 150 кб кода, а этот кусок меняет проксю для WebBrowser Control без проблем.

Ответить

Номер ответа: 14
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #14
Добавлено: 04.09.04 10:27
Сейчас попробовал, вроде для открытого браузера IE6 этот код прокси не
меняет :(

Ответить

Номер ответа: 15
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #15
Добавлено: 04.09.04 10:54
Я написал:
>в своей проге изменять
А чтобы для ИЕ, то используй код, что я кинул выше. Правда на ходу я не умею для ИЕ изменять.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам