[DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

1. [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/11/2016 - 07:49h

Olá, pessoal
Estou com um projeto em andamento, o cliente primeiro pediu algo que apenas alterasse o próprio computador entre uns minutos e outros. Ele trabalha com lan houses, e agora precisa de um programa que permita mudar o ip de determinados computadores.
Costumam jogar jogos online no local, e para mudar de servidores e evitar que os jogos travem, ele precisa desse recurso.

Mas a minha dúvida é: como eu posso fazer a comunicação de um código em C com um site?
No famoso "system" eu já pensei, e é possível, realmente.

Eis meu rascunho:


#include <stdio.h>
#include <stdlib.h>
#include <syscall.h>

int main()

{

char arg;
int rsp;

puts("MUDAR DE SERVIDOR? ");


scanf(" %s",&arg);
rsp=arg;
if(rsp == 's')
{
printf("Estabelecendo conexão...");
system("firefox sitetal.com/list/open.html");
}
else
{

printf("Fechando programa...");

return 0;


}
}




Eu gostaria que no momento de dar a chamada para o sistema, já ser selecionado automaticamente um dos links do site. Pode ser um link fixo. E a cada 10 minutos, aproximadamente, o processo há de se repetir.

Talvez selecionando o código fonte do próprio site possa resolver... bom,

Fico grato com qualquer ajuda!

Abraços,

paz!


  


2. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 10/11/2016 - 08:01h

Não consegui entender a sua dificuldade, você quer alterar o ip de um host ou abrir uma página no navegador?

Para ambos os casos, me parece mais simples escrever um script (bash, batch, python, perl) que faça isso, invocando ifconfig (se for mudar ip) ou firefox (se for abrir o navegador). Para escalonar a tarefa a cada 10 min, pode utilizar o cron
Se estiver em ambiente Windows, não vai mudar muito, vai ter que usar ipconfig e schtasks.

--
Uilian Ries
Linux Counter: 521986


3. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/11/2016 - 08:10h

uilianries escreveu:

Não consegui entender a sua dificuldade, você quer alterar o ip de um host ou abrir uma página no navegador?

Para ambos os casos, me parece mais simples escreve um script que faça, invocando ifconfig (se for mudar ip) ou firefox (se for abrir o navegador). Para escalonar a tarefa a cada 10 min, pode utilizar o cron
Se estiver em ambiente Windows, não vai mudar muito, vai ter que usar ipconfig e schtasks.

--
Uilian Ries
Linux Counter: 521986


Pois então, eu preciso que faça as duas funções, que capture a primeira lista de ip. Ou seja, o primeiro ip e porta da lista contidas no site. Dá pra transformar numa rotina.
O site que fornece os ip's e portas, logo, tenho que me conectar à ele para obter as informações.

Acontece que o dono também gosta de jogar, e no computador dele não há nada de Python, Perl etc instalado.... por isso prefiro C. Bem mais portátil. e ele quer que as configuraçoes mudem no navegador principal. As configurações de proxy.

Tu já fez algo parecido?


4. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/11/2016 - 08:14h

Basicamente, o programa tem que capturar o IP e a porta fornecidas pelo site, e transcrever para as configurações de proxy do navegador em uso. E do host, mas isso é o mínimo.

O que eu não tinha feito é essa "comunicação" com um site, usar como uma "fonte"; ....

... Assim ele poderá alterar os dos outros computadores em uso.

Ninguém gosta de parar uma partida porque o servidor tá caindo, né!?
HEhehhe

abraço


5. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/11/2016 - 08:35h

Melhor você dar um jeito de instalar algum software de linguagem na máquina dele.
Porque não em BASH script? Ou Python? Ou Perl?
Compensa mais você aprender um destes três do que se matar em C.
C não serve a este propósito.

Quer dizer, até vai, mas o código vai ficar cheio de gambiarras e horroroso.
Linguagens interpretadas (ou interpiladas) de scripts servem melhor a este propósito.
Casamento de comandos de terminal. Ou API de administração de sistema.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



6. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 10/11/2016 - 08:44h

Agora peguei a ideia.

Penso em 3 pontos que você precisará atuar:

- Parsear a página HTML
Em C/C++ não existe suporte nativo para isso, você vai precisar alguma biblioteca pra carregar o conteúdo da página e extrair os IPs.
Em mente, lembro que Qt tem algo mastigado para parsear HTML. Você pode ler algo a respeito aqui: https://wiki.qt.io/Handling_HTML

- Aplicar configurações no host
Essa operação requer elevação de usuário, lembre disso.
Se for utilizar Qt para parser o HTML, pode também utilizar QProcess para invocar ifconfig e alterar o IP local.
Evite utilizar o comando system, ele possui várias vulnerabilidades conhecidas.

- Aplicar configurações no navegador
Acredito que submeter as configurações via Form, não seja tão trivial.
Chutando que você esteja utilizando o Firefox, existe um arquivo chamado prefs.js que contém as configurações,
incluindo o proxy. Você pode abrir este arquivo, alterar o endereço/porta, e abrir o navegador.

--
Uilian Ries
Linux Counter: 521986


7. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/11/2016 - 09:39h

IP e porta de quê?

Um site remoto não vai ter como informar qual IP você, no seu lado local, vai poder usar. Até porque é bem provável que o seu lado local seja atrás de um firewall, com IPs de uma das faixas reservadas (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). Logo não tem nada a ver com ifconfig/ipconfig.

São endereços de proxies para anonimizar IPs? Ou endereços de servidores de algum jogo? Esses endereços não podem ser resolvidos por DNS?

Se só funcionar via HTTP/HTTPS, mesmo assim ainda pode ser mais fácil fazer através de scripts do que de programas em C ou C++. O curl é uma ferramenta muito interessante de se usar. Possivelmente você precise de muito pouca coisa além de curl e grep.


8. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 14/11/2016 - 08:55h

paulo1205 escreveu:

IP e porta de quê?

Um site remoto não vai ter como informar qual IP você, no seu lado local, vai poder usar. Até porque é bem provável que o seu lado local seja atrás de um firewall, com IPs de uma das faixas reservadas (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). Logo não tem nada a ver com ifconfig/ipconfig.

São endereços de proxies para anonimizar IPs? Ou endereços de servidores de algum jogo? Esses endereços não podem ser resolvidos por DNS?

Se só funcionar via HTTP/HTTPS, mesmo assim ainda pode ser mais fácil fazer através de scripts do que de programas em C ou C++. O curl é uma ferramenta muito interessante de se usar. Possivelmente você precise de muito pouca coisa além de curl e grep.


O site que eu preciso extrair os ip's e portas, oferece uma lista de proxys disponíveis. Então, apenas preciso retirar esses dois dados do site e transcrever para configurações de proxy do próprio navegador, por agora.

Ou, mais simples, apenas extrair os 2 dados do site, e então passar pra o terminal.
Pois não achei nada que trate sobre "transcrever" dados de um site direto para o navegador. Só se for como o amigo ali em cima falou, sobre o arquivo prefs.js.

Há como me ajudar?


9. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 14/11/2016 - 09:06h

uilianries escreveu:

Agora peguei a ideia.

Penso em 3 pontos que você precisará atuar:

- Parsear a página HTML
Em C/C++ não existe suporte nativo para isso, você vai precisar alguma biblioteca pra carregar o conteúdo da página e extrair os IPs.
Em mente, lembro que Qt tem algo mastigado para parsear HTML. Você pode ler algo a respeito aqui: https://wiki.qt.io/Handling_HTML

- Aplicar configurações no host
Essa operação requer elevação de usuário, lembre disso.
Se for utilizar Qt para parser o HTML, pode também utilizar QProcess para invocar ifconfig e alterar o IP local.
Evite utilizar o comando system, ele possui várias vulnerabilidades conhecidas.

- Aplicar configurações no navegador
Acredito que submeter as configurações via Form, não seja tão trivial.
Chutando que você esteja utilizando o Firefox, existe um arquivo chamado prefs.js que contém as configurações,
incluindo o proxy. Você pode abrir este arquivo, alterar o endereço/porta, e abrir o navegador.

--
Uilian Ries
Linux Counter: 521986



Amigo, tem como me mandar um exemplo de como ficaria usando o método Form?
EU não consegui localizar o prefs.js. É que o programa quanto mais automático for, melhor será visto. DEpois farei uma interface gráfica até.

Fico grato com tua ajuda!



10. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/11/2016 - 09:52h

mrx6s0 escreveu:

O site que eu preciso extrair os ip's e portas, oferece uma lista de proxys disponíveis. Então, apenas preciso retirar esses dois dados do site e transcrever para configurações de proxy do próprio navegador, por agora.


Se você está querendo mexer em parâmetros do navegador, talvez seja interessante fazer isso de dentro do próprio navegador.

Os navegadores frequentemente oferecem APIs para Javascript (ou VBS, ou Java etc.) para alterações de alguns parâmetros de operação e também para conteúdo recebido da web ou para ela remetido. Você poderia estudar plugins de automação de tarefas na web, como o Greasemonkey, por exemplo.

Ou, mais simples, apenas extrair os 2 dados do site, e então passar pra o terminal.


Isso é fácil. Você possivelmente conseguirá fazer um bocado de coisa interessante apenas com curl, sed e awk.

Pois não achei nada que trate sobre "transcrever" dados de um site direto para o navegador. Só se for como o amigo ali em cima falou, sobre o arquivo prefs.js.


Você poderia realmente fazer por fora, e obrigar o navegador a ser reiniciado. Mas experimente pesquisar as APIs de automatização oferecidas pelos navegadores.


11. Re: [DÚVIDA SOBRE COMUNICAÇÃO COM SITES] [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 14/11/2016 - 10:15h

A opção que o Paulo passou, é a mais simples.

Se você for parsear o HTML por algum código, vai levar mais tempo resolvendo cada campo do que usando uma sequência de comandos, como ele passou.

O prefs.js fica dentro do diretório de perfil. Aqui está a possível localização, por plataforma: http://kb.mozillazine.org/Profile_folder

Mas como o próprio Paulo disse, você poderia tentar usar a API do navegador, é uma boa opção.


--
Uilian Ries
Linux Counter: 521986






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts