PDA

View Full Version : سوال: استفاده از پروکسی در web browser در vb



ortegoli
جمعه 10 آذر 1391, 14:40 عصر
سلام دوستان من یه برنامه دارم که برای یاهو هست و در اون احتیاج داره تا با هربار استفاده از اون IP عوض بشه

یعنی هر آی پی میتونه 1بار اون کار رو انجام بده حالا میخوام بدونم راهی هست که من برنامه رو طوری کنم که از یه input پروکسی بگیره و با Web Browser تنظیم کنه ؟

و با هربار Refresh مرورگر تو برنامه یه آی پی دیگه از اون لیست با مرورگر ست کنه ؟



مدیران اگر جای پست اشتباه هست لطفا انتقال بدید

محسن واژدی
جمعه 10 آذر 1391, 19:30 عصر
سلام علیکم
کد زیر را در ماژول قرار بدین:
'Module
Option Explicit

Private Type INTERNET_PER_CONN_OPTION

dwOption As Long
dwValue1 As Long
dwValue2 As Long

End Type

Private Type INTERNET_PER_CONN_OPTION_LIST

dwSize As Long
pszConnection As Long
dwOptionCount As Long
dwOptionError As Long
pOptions As Long

End Type

Private Const INTERNET_PER_CONN_FLAGS As Long = 1

Private Const INTERNET_PER_CONN_PROXY_SERVER As Long = 2

Private Const INTERNET_PER_CONN_PROXY_BYPASS As Long = 3

Private Const PROXY_TYPE_DIRECT As Long = &H1

Private Const PROXY_TYPE_PROXY As Long = &H2

Private Const INTERNET_OPTION_REFRESH As Long = 37

Private Const INTERNET_OPTION_SETTINGS_CHANGED As Long = 39

Private Const INTERNET_OPTION_PER_CONNECTION_OPTION As Long = 75

Private Declare Function InternetSetOption _
Lib "wininet.dll" _
Alias "InternetSetOptionA" (ByVal hInternet As Long, _
ByVal dwOption As Long, _
lpBuffer As Any, _
ByVal dwBufferLength As Long) As Long

' Set Proxy

Public Function SetConnectionOptions(ByVal conn_name As String, _
ByVal proxy_full_addr As String) As Boolean

' conn_name: active connection name. (LAN = "")
' proxy_full_addr : eg "193.28.73.241:8080"
Dim list As INTERNET_PER_CONN_OPTION_LIST

Dim bReturn As Boolean

Dim dwBufSize As Long

Dim options(0 To 2) As INTERNET_PER_CONN_OPTION

Dim abConnName() As Byte

Dim abProxyServer() As Byte

Dim abProxyBypass() As Byte

dwBufSize = Len(list)

' Fill out list struct.
list.dwSize = Len(list)

' NULL == LAN, otherwise connection name.
abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
list.pszConnection = VarPtr(abConnName(0))

' Set three options.
list.dwOptionCount = 3

' Set flags.
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT Or PROXY_TYPE_PROXY

' Set proxy name.
options(1).dwOption = INTERNET_PER_CONN_PROXY_SERVER
abProxyServer() = StrConv(proxy_full_addr & vbNullChar, vbFromUnicode)
options(1).dwValue1 = VarPtr(abProxyServer(0)) '//"http://proxy:80"

' Set proxy override.
options(2).dwOption = INTERNET_PER_CONN_PROXY_BYPASS
abProxyBypass() = StrConv("local" & vbNullChar, vbFromUnicode)
options(2).dwValue1 = VarPtr(abProxyBypass(0))

list.pOptions = VarPtr(options(0))

' Make sure the memory was allocated.
If (0& = list.pOptions) Then
' Return FALSE if the memory wasn't allocated.
Debug.Print "Failed to allocate memory in SetConnectionOptions()"
SetConnectionOptions = 0
End If

' Set the options on the connection.
bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)

' Free the allocated memory.
Erase options
Erase abConnName
Erase abProxyServer
Erase abProxyBypass
dwBufSize = 0
list.dwOptionCount = 0
list.dwSize = 0
list.pOptions = 0
list.pszConnection = 0
Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 0)
SetConnectionOptions = bReturn
End Function

' Disable Proxy

Public Function DisableConnectionProxy(ByVal conn_name As String) As Boolean

' conn_name: active connection name. (LAN = "")
Dim list As INTERNET_PER_CONN_OPTION_LIST

Dim bReturn As Boolean

Dim dwBufSize As Long

Dim options(0) As INTERNET_PER_CONN_OPTION

Dim abConnName() As Byte

dwBufSize = Len(list)

' Fill out list struct.
list.dwSize = Len(list)

' NULL == LAN, otherwise connectoid name.
abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
list.pszConnection = VarPtr(abConnName(0))

' Set three options.
list.dwOptionCount = 1

' Set flags.
options(0).dwOption = INTERNET_PER_CONN_FLAGS
options(0).dwValue1 = PROXY_TYPE_DIRECT

list.pOptions = VarPtr(options(0))

' Make sure the memory was allocated.
If (0 = list.pOptions) Then
' Return FALSE if the memory wasn't allocated.
Debug.Print "Failed to allocate memory in DisableConnectionProxy()"
DisableConnectionProxy = 0
End If

' Set the options on the connection.
bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)

' Free the allocated memory.
Erase options
Erase abConnName
dwBufSize = 0
list.dwOptionCount = 0
list.dwSize = 0
list.pOptions = 0
list.pszConnection = 0
Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 0)
DisableConnectionProxy = bReturn
End Function

برای مثال:
Call SetConnectionOptions(Empty, "128.11.51.31:8080")

موفق باشید