• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cableguy

WebBrowser Control

21 mensagens neste tópico

Olá a todos...

uso uma linguagem derivada do .net....

O basic4ppc....(www.basic4ppc.com)

Nela posso usar dlls, e estou a usar num projecto um webbrowser control, com algumas propiedades e metodos que me interessam usar...

O meu problema é que PRECISO de fazer o download de um ficheiro, mas sem que o "DownloadFile dialog" apareça...

Não posso usar a dll de http, porque se trata de um forum, no qual preciso de fazer o login...

Alguma ideia?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fazer login e get do file por AJAX? não sei quais os problemas que levanta mas o login e o get ficavam transparentes para o utilizador

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tanto quanto sei posso usar o http com POST mas nao sei o que por no method Post...

O user name e password eu consigo aceder assim como ao security Token...

E consigo ver o formato do methodo post no Submit do form....

Se for util eu posto aki o submit...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Forum é um vBulletin e o Login é feito neste Form:

<!-- login form -->
	<form action="http://www.basic4ppc.com/forum/login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
	<script type="text/javascript" src="clientscript/vbulletin_md5.js?v=3612"></script>

	<table cellpadding="0" cellspacing="3" border="0">
	<tr>
		<td class="smallfont"><label for="navbar_username">User Name</label></td>
		<td><input type="text" class="bginput" style="font-size: 11px" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="User Name" onfocus="if (this.value == 'User Name') this.value = '';" /></td>
		<td class="smallfont" colspan="2" nowrap="nowrap"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Remember Me?</label></td>
	</tr>
	<tr>
		<td class="smallfont"><label for="navbar_password">Password</label></td>

		<td><input type="password" class="bginput" style="font-size: 11px" name="vb_login_password" id="navbar_password" size="10" tabindex="102" /></td>
		<td><input type="submit" class="button" value="Log in" tabindex="104" title="Enter your username and password in the boxes provided to login, or click the 'register' button to create a profile for yourself." accesskey="s" /></td>
	</tr>
	</table>
	<input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="a55b793e5e3f0de82892f0c0614f2523646715e9" />
	<input type="hidden" name="do" value="login" />		
	<input type="hidden" name="vb_login_md5password" />
	<input type="hidden" name="vb_login_md5password_utf" />

	</form>
	<!-- / login form -->

As variaveis "vb-login_username" e "vb_login_password" são valores que o utilizador tem que fornecer á minha aplicação na 1º vez que a corre...

Mas nao entendo que valor tem as variaveis "vb_login_md5password" e "vb_login_md5password_utf"...

Alguem me pode ajudar com este metodo POST?

desta forma sei que conseguia resolver o meu problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Vbulletin encripta para md5 a password antes de enviar o formulário com javascript. Assim se tiveres a fazer sniffing na rede, só vais apanhar peçados da hash md5 da password.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu problema não sao os valores em si,, uma vez que eu SEI a password e por isso consigo reproduzir os dados...

Tenho uma versão deste formulario, simplificada ao maximo, apenas para permitir o LOG IN do utilizador, afim de obter uma "autenticação" no Forum...

O meu problema é que preciso de fazer o download de ficheiros de um sub-forum reservado a utilizadores "Autenticados", a quem se destina esta app..

Esta App tem como função manter actualizados, uma serie de ficheiros que vao sendo colocados nesse sub-forum por outros utilizadores...

usando o WebBrowser control eu consigo navegar para um link de download, mas nao tenho como "passar por cima" do dialogo de download do windows...

O Forum  pode depositar uma cookie, e eu sei que posso fazer o utilizador se "Logar" e permitir essa cookie...

mas como a posso usar num metodo POST????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estava aqui a pensar no teu caso, nomeadamente sobre a possível falha de segurança que o browser teria se fosse possível sacar um ficheiro sem que a dialog box apareça para o utilizador confirmar a operação....  :hmm:

por ftp não dá?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não estou a perceber uma coisa,

o que tu queres não é sacar ficheiros de uma área reservada mas que isso seja transparente para o utilizador, ou seja, que ele não tenha que fazer login?

ou é sacar esses ficheiros "automaticamente" para outra pasta?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

OK...Começando do principio..Se visitaste o link, percebeste que o forum é sobre um IDE de programação baseado em c# mas que NÃO é c#....(!)

Nele existe um sub-forum...AditionalLibraries...leia-se dlls...

è onde os utilizadores colocam as suas criações...

O problema que existe com a solução vigente...

é que é complicado ter a certeza que se tem a ultima versão de determinada dll...

daí criei um Post que é uma lista de links para as ultimas versoes de cada dll...

Depois surgiu a ideia...

e se em vez de o utilizador ter que ir á procura de quais as dlls que tiveram actualizações e descarrega-las..eu cria-se uma app que o fizesse automaticamente...?

O problema é que as dlls so estao disponiveis para download por utilizadores registados e com licencas de utilização do IDE activas...

essa Autenticação eu ja consegui, fazendo o login do utilizador de forma transparente...

Mas agora surge a necessidade de conseguir de facto um download, inicialmente de 1 pequeno ficheiro de Log, com a lista das versões correntes para comparar com a Log do "client", e depois para fazer o download do zip e xtrair os ficheiro relevante spara uma determinada pasta...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah, é que sem a história do log não estava a ver qual o problema de aparecer a dialog de download!

let me think

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes resolver isso indo buscar o conteúdo do ficheiro de log em vez do ficheiro propriamente dito, pedido AJAX e depois no processamento da resposta geras os links que tiveres q gerar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

???????Não percebi.....Como consigo "Ler" o ficheiro sem o descarregar?

Uma alternativa seria fazer +- o mesmo que com a Lista...Criar um Post com essa lista e extrair do html...

Mas é tipo tentar fazer sopa de pedra com areia....

depois tenho o problema dos ZIPs...

PS. se quiseres ver a autenticação a funcionar, envio-te a aplicação por mail, e fornece-te os dados necessarios...

Mas preciso do teu mail para isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como consigo "Ler" o ficheiro sem o descarregar?

o ficheiro está no servidor certo? abres o ficheiro através de um filestream qq, lês o conteúdo e mandas-o na resposta

sobre os zips:

o mais fácil seria um zip para cada dll, em que depois de detectados os ficheiros que o utilizador não tinha (actualizados) era gerada uma página com links, um link para cada file, deste modo dá mais trabalho ao utilizador mas este pode escolher quais é que quer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu não tenho acesso ao servidor a não ser pelo forum...

Eu penso que te estou a perceber....

Ja agora entao, eu ponho a seguinte questao:

Visto que estou a utilizar um web browser control...Que tem varios methodos de navigate...è possivel obter uma tream com alguns desses methodos?

misturando webbrowser com http?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se não tens acesso ao servidor a não ser pelo fórum onde é que vais alojar a tua aplicação? o ficheiro que queres ler estará na tua aplicação... mas se não vai estar no servidor do forum.... não sei se ele deixa cross site script

em relação ao controlo não sei  :P nunca fiz/mexi em nenhum web browser control

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia é cada utilizador "registado" poder sacar a aplicação do forum... e instala-la no seu pc...

durante o "First Run", serão introduzidos dados para a autenticação, a pasta de destino das dlls, e criado um Log "client-side" nessa mesma pasta...

No forum apenas terei que ter e manter actualizado o log "server-side" ou em file ou em text num Post... O que eu não queria fazer...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o cookie tem informação dinâmica?

senão podias tentar (n sei se dá) criar um pedido http com cookie incluído para ir buscar esses files,

PS: ter um espaço online próprio sobre o qual a tua aplicação iria trabalhar não resolve?

em termos de trabalho de actualização dos ficheiros é quase o mesmo

ate amanha

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, ter um espaço WEB própio resolve,..... :wallbash:

Obrigado por Tudo, e principalmente pela paciencia...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui ler um ficheiro de um URI, ou seja, o que precisavas ;) não é download, é leitura, mas ainda é melhor já que terias que o ler de qq maneira

System.Net.WebClient client = new WebClient();

           using (Stream fs = client.OpenRead("http://www.codeprime.biz/blogs/license.txt"))
           {
               byte[] b = new byte[1024];
               UTF8Encoding temp = new UTF8Encoding(true);
               while (fs.Read(b, 0, b.Length) > 0)
               {
                   Console.WriteLine(temp.GetString(b));
               }
           }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem... depois de muito matutar, programar, tentar e errar...lá consegui algum sucesso...

Arranjei um http viewer, e espreitei os headers que sao enviados com o equest quando tento fazer o download...

Com essa informação consegui reproduzir os meus passos em codigo e obter o tamanho do ficheiro...

Afinal parece que o que eu preciso é da cookie que é enviada com o request do file...Agora surge-me outro problema...

Com o Browser control, eu consigo obter as cookies que uma determinada pagina devolve...mas parecem-me ficar a faltar algumas.....

Ex:

o http viewer da-me estas cookies:

Cookie: __utma=45362615.1697301061.1230667896.1232904263.1232905331.103; __utmz=45362615.1230667896.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); bblastvisit=1232895805; bblastactivity=0; bbuserid=4; bbpassword=feca084d5d00e9d07511f0a817c2814e; __utmb=45362615; bbsessionhash=4d3ef085af9aefc1a65dfcc056bbbfdc; __utmc=45362615

O webbrowser.document.cookies da-me

Cookie: __utma=45362615.1697301061.1230667896.1232904263.1232905331.103; __utmz=45362615.1230667896.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); bblastvisit=1232895805; bblastactivity=0; __utmb=45362615;  __utmc=45362615

Onde foram parar o resto das cookies?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora