El servidor responde por el socket abierto, ¿no es así?
El addon ese a lo mejor redirige el tráfico a través de un proxy de su servidor, o algo así.
He "investigado" un poco y la traducción de un fragmento de la web del addon dice lo siguiente:
¿Cómo funciona?Puedes pensar que si se pudiera sobrescribir cualquier información existente sobre tu IP yo lo habría hecho(o alguien lo hubiera hecho hace tiempo)
Pero actualmente es un poco mas complicado: Cuando mandamos un petición a un servidor, le proporcionas varia información sobre tu dirección IP : Tres de ellos provienen de la capa de aplicación (Application Layer) y el ultimo viene de la capa de Transporte (Transport Layer). Este ultimo no puedo modificarlo: no obtendrías ninguna respuesta a tu petición si lo estuviera. Pero las otras tres pueden ser sobrescritas sin ninguna consecuencia para tu navegación...
Estos tres Headers fueron creados para proporcionar informacion de la IP real de una persona que nevega a través de un servidor proxy. Así que cuando activas IPFuck, las paginas webs que visites pensaran que tu IP real es un servidor Proxy y (Si la pagina web está hecha correctamente) se centrará en la IP falsa que estás mandando...
Muchas paginas webs tratan de averiguar quien está detras de un servidor proxy. Si no me crees ( no me importa), comprueba esta busqueda de google :
http://www.google.com/#hl=en&source=hp&q=get+real+ip+address+php Muchos de los snipplets que salen ahí comprobarán los HTTP Headers (los que hemos modificado) antes que la informacion de "Transport Layer" ('REMOTE_ADDR').
La traducción es cosa mía, puede que no esté bien del todo.
Aún que al principio se contradice un poco con el resto del texto, según eso simplemente está sobrescribiendo los Headers que mencioné en el primer post.
EDITOYa lo he solucionado, el problema era el nombre de los headers, el nombre correcto es
HTTP_X_FORWARDED_FOR --- X-Forwarded-For
HTTP_CLIENT_IP --- CLIENT-IP
HTTP_VIA --- VIA
Cambiando eso en mi código ya me permite modificarlo:
'GetNext es una función para generar un numero aleatorio
MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
Aquí pongo unas capturas de mi programa:
Interfaz Boton Refresh
Boton Renew Boton Renew
En el HTTP_VIA solo se ven los primeros digitos por un problema al parsear la respuesta, ya lo he solucionado, pero me da pereza arreglar las capturas.
El codigo basicamente es este:
Public Function Web(url As String, IP As Boolean)
Dim MyUrl As String = String.Format(url)
Dim MyHttpWebRequest As HttpWebRequest = CType(HttpWebRequest.Create(MyUrl), HttpWebRequest)
MyHttpWebRequest.Credentials = CredentialCache.DefaultCredentials
'MyHttpWebRequest.Proxy = New WebProxy("86.51.26.20:8888")
MyHttpWebRequest.UserAgent = "Mozilla/4.0"
If IP = True Then 'Al pulsar el boton Renew el parametro IP es = a True mientras que el Boton Refres el parametro IP = False
MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
End If
Dim MyHttpWebResponse As HttpWebResponse = CType(MyHttpWebRequest.GetResponse(), HttpWebResponse)
Dim MyStream As Stream = MyHttpWebResponse.GetResponseStream
Dim MyStreamReader As StreamReader = New StreamReader(MyStream)
Dim MyHtml As String = MyStreamReader.ReadToEnd
'Dim MyHtmlEnLineas() As String = Split(MyHtml,vbCrLf)
'Dim MyLinea As String = MyHtmlEnLineas(linea)
'MyLinea = Mid(MyLinea, mid1, Len(MyLinea) - mid2)
Return MyHtml
MyUrl = Nothing
MyHttpWebRequest = Nothing
MyHttpWebResponse = Nothing
MyStream = Nothing
MyStreamReader = Nothing
MyHtml = Nothing
End Function
Y ya está listo para implementarlo en cualquier programa, ahora probaré si también funciona con el WebBrowser.
Gracias por la información que me habéis proporcionado