Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
Editar agente de usuario en la solicitud C http

Encuentro una solicitud incorrecta cuando intento realizar una solicitud GET con un código C en mi servidor web apache2. Aquí está el registro:

 92.184.98.135 - - [20/Jul/2021:11:52:17 +0000] "GET //log.php?log=test&name=name HTTP/1.1" 400 0 "-" "-"

Y cuando hago lo mismo con Firefox funciona:

 92.184.98.135 - - [20/Jul/2021:11:59:17 +0000] "GET //log.php?log=log&name=name HTTP/1.1" 200 203 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0"

¿Alguien sabe cómo deshabilitar la verificación de User-Agent con el servidor apache2? ¿O si el problema viene de otro lado?

Aquí está el código de mi función en c:

 WSADATA wsa; SOCKET sockfd; char *message_fmt = "GET //log.php?log=%s&name=%s HTTP/1.1\r\n\r\n"; struct hostent *server; struct sockaddr_in serv_addr; int bytes, sent, received, total; char message[4096],response[4096]; FILE * LOG_FILE; LOG_FILE = fopen(file, "r+"); char log[1000] = "data:"; char ch = fgetc(LOG_FILE); while(ch != EOF) { strncat(log, &ch, 1); ch = fgetc(LOG_FILE); } fclose(LOG_FILE); char *username = getenv("USERNAME"); sprintf(message,message_fmt,log,username); if((sockfd = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET) { fprintf(DEBUG,"Could not create socket : %d" , WSAGetLastError()); } server = gethostbyname(adress); memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(portno); memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr); total = strlen(message); sent = 0; do { bytes = send(sockfd,message+sent,total-sent,0); if (bytes < 0) {printf("ERROR writing message to socket");} if (bytes == 0) break; sent+=bytes; } while (sent < total); memset(response,0,sizeof(response)); total = sizeof(response)-1; received = 0; do { bytes = recv(sockfd,response+received,total-received,0); if (bytes < 0) {printf("ERROR reading response from socket");} if (bytes == 0) break; received+=bytes; } while (received < total); closesocket(sockfd); WSACleanup();

En la medida en que este código es para Windows, uso estas bibliotecas:

 #include <stdio.h> #include <winsock2.h> #pragma comment (lib, "Ws2_32.lib") #include <windows.h> #include <winuser.h> #include <string.h>

Gracias por tu ayuda !

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda