如何解决在 C http 请求中编辑 User-Agent
当我尝试在我的 apache2 网络服务器上使用 C 代码执行 GET 请求时遇到错误请求。 这是日志:
92.184.98.135 - - [20/Jul/2021:11:52:17 +0000] "GET //log.PHP?log=test&name=name HTTP/1.1" 400 0 "-" "-"
当我用 Firefox 做同样的事情时:
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"
有人知道如何禁用 apache2 服务器的 User-Agent 检查吗?或者如果问题来自其他地方?
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,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,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();
至于此代码适用于 Windows,我使用这些库:
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib,"Ws2_32.lib")
#include <windows.h>
#include <winuser.h>
#include <string.h>
感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。