Seeking VB.Net Proxy examples

Seeking VB.Net Proxy examples

am 21.01.2006 05:05:08 von Cerksees

I have seen http://www.vbdotnetheaven.com/Code/Aug2003/2146.asp - but it
does not work.

I need a working example....if anyone has seen one.

Jim

RE: Seeking VB.Net Proxy examples

am 21.01.2006 15:16:03 von Dennis

Sorry for my ignorance, but what does a proxy server do exactly? I am not
familiar with the term "Proxy". Thanks for any info or links that you can
share.
--
Dennis in Houston


"Jim" wrote:

> I have seen http://www.vbdotnetheaven.com/Code/Aug2003/2146.asp - but it
> does not work.
>
> I need a working example....if anyone has seen one.
>
> Jim
>
>
>

Re: Seeking VB.Net Proxy examples

am 21.01.2006 20:32:41 von Cerksees

"Dennis" wrote in message
news:776EAAF7-F521-4C79-B832-657A8BB7F0F7@microsoft.com...
> Sorry for my ignorance, but what does a proxy server do exactly? I am
> not
> familiar with the term "Proxy". Thanks for any info or links that you can
> share.

A proxy server makes requests on behalf of another machine (PC). Proxy
servers are mostly used for HTTP traffic, but can be used for any traffic
that needs a "go-between" for 2 PCs (like the servers that relay IM
conversations between PCs).

When a proxy is used for HTTP traffic, you must point your browser to the
proxy instead of to your cable modem, router or direct internet connection.
The proxy becomes the target of your HTTP requests. The proxy then connects
to the network (or internet) on your behalf, retrieves your requested
page/resource and passes it along to you.

Proxies can be used to filter out ads, pop-ups, viruses, adult content,
objectionable websites, allow anonymous web surfing (see www.anonymizer.com
for an example of this), etc.. They can also be used to track employee web
usage (a big brother kind of thing that I, personally, oppose).

For a better explanation, see http://en.wikipedia.org/wiki/Proxy_server .

Hope this helps.

Jim

Re: Seeking VB.Net Proxy examples

am 21.01.2006 22:18:34 von Cerksees

I have found an example of VB.Net console proxy, and have fixed a couple of
errors. But, it does not seem to pass through pictures and throws an error
that says "An existing connection was forcibly closed by the remote host".

The goal is to be able to filter the content on the way to the browser. Any
help you could give with this project would be appreciated.

The VB.Net 2005 code is as follows......


Imports System '
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Threading

Namespace WebProxy2

Class WebProxy2
Private clientSocket As Socket
Private read() As [Byte] = New Byte(1024) {}
Private Buffer As [Byte]() = Nothing
Private ASCII As Encoding = Encoding.ASCII
Private HTTP_VERSION As String = "HTTP/1.0"
Private CRLF As String = ControlChars.Cr + ControlChars.Lf
Private RecvBytes(4096) As [Byte]


Public Sub New(ByVal socket As Socket)
Me.clientSocket = socket
End Sub 'New

Public Sub run()
Dim clientmessage As [String] = " "
Dim sURL As [String] = " "
Dim bytes As Integer = readmessage(read, clientSocket,
clientmessage)
If bytes = 0 Then
Return
End If
Dim index1 As Integer = clientmessage.IndexOf(" "c)
Dim index2 As Integer = clientmessage.IndexOf(" "c, index1 + 1)
If index1 = -1 Or index2 = -1 Then
Throw New IOException()
End If
Console.WriteLine("Connecting to Site: {0}",
clientmessage.Substring(index1 + 1, index2 - index1))
Console.WriteLine("Connection from {0}",
clientSocket.RemoteEndPoint)

Dim part1 As String = clientmessage.Substring(index1 + 1,
index2 - index1)
Dim index3 As Integer = part1.IndexOf("/"c, index1 + 8)
Dim index4 As Integer = part1.IndexOf(" "c, index1 + 8)
Dim index5 As Integer = index4 - index3
sURL = part1.Substring(index1 + 4, part1.Length - index5 - 8)

Try
Dim IPHost As IPHostEntry = Dns.Resolve(sURL)
Console.WriteLine("Request resolved: ", IPHost.HostName)
Dim aliases As String() = IPHost.Aliases
Dim address As IPAddress() = IPHost.AddressList
Console.WriteLine(address(0))
Dim sEndpoint As New IPEndPoint(address(0), 80)
Dim IPsocket As New Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
IPsocket.Connect(sEndpoint)
If IPsocket.Connected Then
Console.WriteLine("Socket connect OK")
End If
Dim [GET] As String = clientmessage
Dim ByteGet As [Byte]() = ASCII.GetBytes([GET])
IPsocket.Send(ByteGet, ByteGet.Length, 0)
Dim rBytes As Int32 = IPsocket.Receive(RecvBytes,
RecvBytes.Length, 0)
Console.WriteLine("Recieved {0}", +rBytes)
'Buffer = RecvBytes;
Dim strRetPage As [String] = Nothing
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0,
rBytes)
While rBytes > 0
rBytes = IPsocket.Receive(RecvBytes, RecvBytes.Length,
0)
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0,
rBytes)
End While
IPsocket.Shutdown(SocketShutdown.Both)
IPsocket.Close()
sendmessage(clientSocket, strRetPage)
Catch exc2 As Exception
Console.WriteLine(exc2.ToString())
End Try
End Sub 'run

Private Function readmessage(ByVal ByteArray() As Byte, ByRef s As
Socket, ByRef clientmessage As [String]) As Integer
Dim bytes As Integer = s.Receive(ByteArray, 1024, 0)
Dim messagefromclient As String =
Encoding.ASCII.GetString(ByteArray)
clientmessage = CType(messagefromclient, [String])
Return bytes
End Function 'readmessage


Private Sub sendmessage(ByVal s As Socket, ByVal message As String)
Buffer = New [Byte](message.Length + 1) {}
Dim length As Integer = ASCII.GetBytes(message, 0,
message.Length, Buffer, 0)
s.Send(Buffer, length, 0)
End Sub 'sendmessage

'Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
Main2(System.Environment.GetCommandLineArgs())
End Sub


Overloads Shared Sub Main2(ByVal args() As String)
Const port As Integer = 8889

'must set up local byte array for address type
Dim myIP(3) As Byte
myIP(0) = 127
myIP(1) = 0
myIP(2) = 0
myIP(3) = 1
Dim myLocalAddress As New System.Net.IPAddress(myIP)

'use byte array to open a listner
Dim tcplistener1 As New TcpListener(myLocalAddress, port)
'TcpListener(port)

Console.WriteLine("Listening on port {0}", +port)
tcplistener1.Start()
While True
Dim socket As Socket = tcplistener1.AcceptSocket()
Dim webproxy As New WebProxy2(socket)
Dim thread As New Thread(New ThreadStart(AddressOf
webproxy.run))
thread.Start()
End While
End Sub 'Main
End Class 'WebProxy2
End Namespace 'WebProxy2

Re: Seeking VB.Net Proxy examples

am 22.01.2006 10:12:17 von Joerg Jooss

Hello Jim,

> I have found an example of VB.Net console proxy, and have fixed a
> couple of errors. But, it does not seem to pass through pictures and
> throws an error that says "An existing connection was forcibly closed
> by the remote host".
[...]

That code blindly treats any content as ASCII text, thus destroying everything
that isn't ASCII text.

I'm afraid this is still as far away from being a full fledged proxy as New
Horizons is from Pluto. Why not use Fiddler (http://www.fiddlertool.com)?

Cheers,
--
Joerg Jooss
news-reply@joergjooss.de

Re: Seeking VB.Net Proxy examples

am 22.01.2006 10:46:59 von Cerksees

"Joerg Jooss" wrote in message
news:94fc5071d27c8c7ed537583157c@msnews.microsoft.com...
> Hello Jim,
>
>> I have found an example of VB.Net console proxy, and have fixed a
>> couple of errors. But, it does not seem to pass through pictures and
>> throws an error that says "An existing connection was forcibly closed
>> by the remote host".
> [...]
>
> That code blindly treats any content as ASCII text, thus destroying
> everything that isn't ASCII text.
> I'm afraid this is still as far away from being a full fledged proxy as
> New Horizons is from Pluto. Why not use Fiddler
> (http://www.fiddlertool.com)?

Looks really neat for a debugging tool, but I need to be able to intercept
incoming HTML and filter out ads and objectionable content.

In short, I want to fiddle with the HTML before the browser sees it.

Jim

Re: Seeking VB.Net Proxy examples

am 22.01.2006 19:41:03 von Dennis

Jim, thanks a lot for taking the time to educate me on proxies. This was an
excellent description.
--
Dennis in Houston


"Jim" wrote:

>
> "Dennis" wrote in message
> news:776EAAF7-F521-4C79-B832-657A8BB7F0F7@microsoft.com...
> > Sorry for my ignorance, but what does a proxy server do exactly? I am
> > not
> > familiar with the term "Proxy". Thanks for any info or links that you can
> > share.
>
> A proxy server makes requests on behalf of another machine (PC). Proxy
> servers are mostly used for HTTP traffic, but can be used for any traffic
> that needs a "go-between" for 2 PCs (like the servers that relay IM
> conversations between PCs).
>
> When a proxy is used for HTTP traffic, you must point your browser to the
> proxy instead of to your cable modem, router or direct internet connection.
> The proxy becomes the target of your HTTP requests. The proxy then connects
> to the network (or internet) on your behalf, retrieves your requested
> page/resource and passes it along to you.
>
> Proxies can be used to filter out ads, pop-ups, viruses, adult content,
> objectionable websites, allow anonymous web surfing (see www.anonymizer.com
> for an example of this), etc.. They can also be used to track employee web
> usage (a big brother kind of thing that I, personally, oppose).
>
> For a better explanation, see http://en.wikipedia.org/wiki/Proxy_server .
>
> Hope this helps.
>
> Jim
>
>
>

Re: Seeking VB.Net Proxy examples

am 23.01.2006 20:22:12 von Joerg Jooss

Hello Jim,

> Looks really neat for a debugging tool, but I need to be able to
> intercept incoming HTML and filter out ads and objectionable content.
>
> In short, I want to fiddle with the HTML before the browser sees it.

Can't you do that with Fiddler's scripting support?

Anyway, there's an open source SSL proxy on GotDotNet, but it's in C#. It
should get you start.

Cheers,
--
Joerg Jooss
news-reply@joergjooss.de

Re: Seeking VB.Net Proxy examples

am 26.01.2006 07:16:55 von Cerksees

"Joerg Jooss" wrote in message
news:94fc5071d8948c7ee71d3df52ec@msnews.microsoft.com...
> Hello Jim,
>
>> Looks really neat for a debugging tool, but I need to be able to
>> intercept incoming HTML and filter out ads and objectionable content.
>>
>> In short, I want to fiddle with the HTML before the browser sees it.
>
> Can't you do that with Fiddler's scripting support?
>
> Anyway, there's an open source SSL proxy on GotDotNet, but it's in C#. It
> should get you start.

I searched for it, but I couldn't find it. Remember where you saw it
specifically?

Thanks!

Jim

Re: Seeking VB.Net Proxy examples

am 26.01.2006 20:57:49 von Joerg Jooss

Hello Jim,

> I searched for it, but I couldn't find it. Remember where you saw it
> specifically?

http://tinyurl.com/cw423

Cheers,
--
Joerg Jooss
news-reply@joergjooss.de

Re: Seeking VB.Net Proxy examples

am 27.01.2006 01:40:49 von Cerksees

Thanks for the link.

I downloaded the code, and ran it in VS 2005. It didn't error out, but it
didn't work at all either.

There's probably some problem with the conversion from the older .Net
framework (but I'd expect an error to be thrown - and there wasn't.

As I don't know C/C++/C#, I'd have no clue where to start, assuming the
application ever worked.

So I'm still searching.

Thanks for the posts though. I'll cob thru the code and see if it can at
least shine some light on what I'm looking to do.

Jim

"Joerg Jooss" wrote in message
news:94fc5071ea4d8c7f0d24d2df560@msnews.microsoft.com...
> Hello Jim,
>
>> I searched for it, but I couldn't find it. Remember where you saw it
>> specifically?
>
> http://tinyurl.com/cw423
>
> Cheers,
> --
> Joerg Jooss
> news-reply@joergjooss.de
>
>