proxy 相关问题

代理是位于两个或多个互连程序或设备之间的设备或程序。对Java类使用[dynamic-proxy],对设计模式使用[proxy-pattern]。

如何在 Vercel 上托管的 Next.js 应用程序中获取客户端 IP 地址?

我在 example.com 上的 Vercel 上托管了一个 Next.js 应用程序。我还有一个托管在 api.example.com 的 API,它接收来自前端的请求。但是,当我尝试记录客户端 IP 地址时...

回答 1 投票 0

创建 HTTP 代理并使用 finfo 检测 mimeType,它破坏了整个代码(php)

我正在尝试在 php 中创建 HTTP 代理,但在设置 Content-Type 标头时出现错误。 这段代码破坏了我的整个代码: $finfo = 新 finfo(FILEINFO_MIME_TYPE); $mimeType = $finfo->buffer(fread($s...

回答 1 投票 0

Selenium 和未检测到的 chromedriver 的代理数据使用过多

我正在 Windows 10 64 位上使用 Python 3.12.4 以及 Selenium 和 unDetected-chromedriver 开发一个机器人。机器人登录网站并导航到特定页面,而不执行任何进一步操作

回答 1 投票 0

POCO 和 Kerberos 身份验证

我正在使用 POCO 通过 HTTPClientSession 类向服务器发送 http 请求。请求必须通过代理(使用 HTTPClientSession->setProxyConfig 即可)。当代理需要 NTLM 时

回答 1 投票 0

代理包装后类方法返回类型丢失

我正在尝试创建一个包装器来捕获错误并返回 [结果 | 的元组]未定义,错误 |不明确的]。然而,TypeScript 类型推断并未按预期工作。 这是我的

回答 1 投票 0

HTTPS 连接需要 HTTPS 代理吗?我可以使用 HTTP 代理吗?

问题是关于 HTTP 与 HTTPS 的。 如果我想匿名加载强制使用 HTTPS 的网站(例如 Google.com),我是否需要 HTTPS 代理,或者可以使用 HTTP 代理吗?

回答 4 投票 0

如何从Android移动应用获取API请求(我不是它的开发者)?

我有一个 Android 移动应用程序,在尝试嗅探时我看不到它的一些请求(此移动应用程序不需要用户进行任何类型的身份验证) 我尝试在 iOS 上使用 Proxyman,并且

回答 2 投票 0

在 Flutter 应用程序中使用 Charles 代理检查 WebSocket 包

我正在使用 Flutter/Dart 开发移动应用程序。我需要的是使用 Charles 代理/Fiddler 调试/测试我的应用程序的网络流量。在 dart/ 中检查 http 请求/响应很容易

回答 2 投票 0

多少个 nginx 缓冲区才算太多?

阅读nginx文档,proxy_buffer命令有这样的解释消息: 该指令设置缓冲区的数量和大小,其中 将阅读从...获得的答案

回答 2 投票 0

python 中的机器人使用代理进行 irc 聊天

我用Python设计了一个用于IRC聊天的机器人,我是Python新手,我认为它很基本,代码可以工作,并且没有问题。 进口插座 导入SSL 导入时间 随机导入 导入线程 导入...

回答 1 投票 0

在 Golang 中使用 MQTT Paho 通过代理连接到 AWS IoT Core 时“连接丢失:EOF;订阅完成之前连接丢失”

我一直在努力通过在 localhost:3128 上运行的 Tinyproxy 代理实例使用运行 Paho 库的 Golang 应用程序连接到 AWS IoT Core MQTT 代理,但没有成功。 我是...

回答 1 投票 0

有什么方法可以绕过 Selenium webdriver 中的 Google 代理阻止吗?

我正在制作一个应用程序(在 Chrome 中使用 Selenium webdriver),在 Google 中搜索指定的查询(http://www.google.com/search?query),但每次搜索它时我都想更改我的 IP所以我就是我们...

回答 2 投票 0

如何编写反向HTTP代理?

所以我正在搞套接字编程,我写了一个转发代理,其工作原理如下: #包括 #包括 #包括 #包括 所以我正在搞套接字编程,我写了一个转发代理,其工作原理如下: #include <winsock2.h> #include <ws2tcpip.h> #include <windows.h> #include <iostream> #include <thread> #pragma comment(lib, "ws2_32.lib") #define BUFFER_SIZE 8192 #define DEFAULT_PORT "87" // Global variables SOCKET g_listenSocket = INVALID_SOCKET; bool g_running = false; bool initWinsock() { WSADATA wsaData; return WSAStartup(MAKEWORD(2, 2), &wsaData) == 0; } bool initServer() { struct addrinfo* result = nullptr, hints; ZeroMemory(&hints, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_PASSIVE; if (getaddrinfo(NULL, DEFAULT_PORT, &hints, &result) != 0) { return false; } g_listenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if (g_listenSocket == INVALID_SOCKET) { freeaddrinfo(result); return false; } if (bind(g_listenSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR) { freeaddrinfo(result); closesocket(g_listenSocket); return false; } freeaddrinfo(result); if (listen(g_listenSocket, SOMAXCONN) == SOCKET_ERROR) { closesocket(g_listenSocket); return false; } return true; } bool isConnectMethod(const char* request) { return strncmp(request, "CONNECT", 7) == 0; } void parseHostAndPort(const char* request, char* host, char* port) { char* line = new char[strlen(request) + 1]; strcpy(line, request); if (isConnectMethod(line)) { // Handle CONNECT method (HTTPS) char* start = line + 8; // Skip "CONNECT " char* end = strchr(start, ' '); if (end) { *end = '\0'; char* colon = strchr(start, ':'); if (colon) { *colon = '\0'; strcpy(host, start); strcpy(port, colon + 1); } else { strcpy(host, start); strcpy(port, "443"); } } } else { // Handle HTTP requests bool foundHost = false; char* current = line; char* eol; // Look for Host header while ((eol = strstr(current, "\r\n")) != nullptr) { *eol = '\0'; if (strncmp(current, "Host: ", 6) == 0) { char* hostLine = current + 6; char* colon = strchr(hostLine, ':'); if (colon) { *colon = '\0'; strcpy(host, hostLine); strcpy(port, colon + 1); } else { strcpy(host, hostLine); strcpy(port, "80"); } foundHost = true; break; } current = eol + 2; } // If no Host header found, try to parse from the request line if (!foundHost) { if (strncmp(line, "GET http://", 11) == 0 || strncmp(line, "POST http://", 12) == 0) { char* start = strchr(line, '/') + 2; char* end = strchr(start, '/'); if (end) { *end = '\0'; char* colon = strchr(start, ':'); if (colon) { *colon = '\0'; strcpy(host, start); strcpy(port, colon + 1); } else { strcpy(host, start); strcpy(port, "80"); } } } } } delete[] line; } SOCKET connectToHost(const char* host, const char* port) { struct addrinfo hints = {}, * result = nullptr; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if (getaddrinfo(host, port, &hints, &result) != 0) { return INVALID_SOCKET; } SOCKET serverSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if (serverSocket == INVALID_SOCKET) { freeaddrinfo(result); return INVALID_SOCKET; } if (connect(serverSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR) { closesocket(serverSocket); freeaddrinfo(result); return INVALID_SOCKET; } freeaddrinfo(result); return serverSocket; } void handleBidirectionalTraffic(SOCKET client, SOCKET server) { fd_set readSet; char buffer[BUFFER_SIZE]; while (true) { FD_ZERO(&readSet); FD_SET(client, &readSet); FD_SET(server, &readSet); // Wait for data on either socket if (select(0, &readSet, NULL, NULL, NULL) == SOCKET_ERROR) { break; } // Check client -> server if (FD_ISSET(client, &readSet)) { int bytes = recv(client, buffer, sizeof(buffer), 0); if (bytes <= 0) break; if (send(server, buffer, bytes, 0) <= 0) break; } // Check server -> client if (FD_ISSET(server, &readSet)) { int bytes = recv(server, buffer, sizeof(buffer), 0); if (bytes <= 0) break; if (send(client, buffer, bytes, 0) <= 0) break; } } closesocket(client); closesocket(server); } void handleClient(SOCKET clientSocket) { char buffer[BUFFER_SIZE]; int bytesReceived = recv(clientSocket, buffer, BUFFER_SIZE - 1, 0); if (bytesReceived <= 0) { closesocket(clientSocket); return; } buffer[bytesReceived] = '\0'; char host[256] = { 0 }; char port[16] = { 0 }; parseHostAndPort(buffer, host, port); if (strlen(host) == 0) { const char* response = "HTTP/1.1 400 Bad Request\r\n\r\n"; send(clientSocket, response, strlen(response), 0); closesocket(clientSocket); return; } SOCKET serverSocket = connectToHost(host, port); if (serverSocket == INVALID_SOCKET) { const char* response = "HTTP/1.1 502 Bad Gateway\r\n\r\n"; send(clientSocket, response, strlen(response), 0); closesocket(clientSocket); return; } if (isConnectMethod(buffer)) { // HTTPS: Send connection established const char* response = "HTTP/1.1 200 Connection established\r\n\r\n"; if (send(clientSocket, response, strlen(response), 0) <= 0) { closesocket(clientSocket); closesocket(serverSocket); return; } } else { // HTTP: Forward the original request if (send(serverSocket, buffer, bytesReceived, 0) <= 0) { closesocket(clientSocket); closesocket(serverSocket); return; } } // Handle bidirectional traffic for both HTTP and HTTPS handleBidirectionalTraffic(clientSocket, serverSocket); } void cleanup() { g_running = false; if (g_listenSocket != INVALID_SOCKET) { closesocket(g_listenSocket); g_listenSocket = INVALID_SOCKET; } WSACleanup(); } int main() { if (!initWinsock()) { std::cerr << "Failed to initialize Winsock\n"; return 1; } if (!initServer()) { std::cerr << "Failed to initialize server\n"; cleanup(); return 1; } g_running = true; std::cout << "Proxy server listening on localhost:87...\n"; while (g_running) { SOCKET clientSocket = accept(g_listenSocket, NULL, NULL); if (clientSocket == INVALID_SOCKET) { continue; } std::cout << "New client connected\n"; // Create a new thread to handle the client std::thread(handleClient, clientSocket).detach(); } cleanup(); return 0; } 程序在循环中使用accept(),为每个连接的客户端创建一个线程,浏览器为每个http请求打开一个tcp连接。现在我想将此代码转换为一个反向代理,它将像这样工作,server.cpp,客户端.cpp。服务器将监听浏览器的连接,接收请求并将其传递给 client.cpp ,其中 client.cpp 将连接到目标主机,然后将响应传递给 server.cpp 然后将响应传递给 browser.client.cpp 将通过以下方式连接简单的 tcp 流到 server.cpp。 我的问题是:由于client.cpp/server.cpp将通过一个tcp流进行通信,我如何才能传递所有请求处理它们并将它们发送回server.cpp?,其中server.cpp针对从浏览器有一个线程吗? 我的第一个想法是在 client.cpp 中的循环内有一个 recv() ,并为从 server.cpp 发送的每个请求创建一个线程,但问题是我不知道如何将每个响应发送回其server.cpp 中的特定线程。 提前致谢。 如果您要通过单个连接发送多个数据流,则必须封装每个流中的数据。为此,您可能需要构建数据。 也就是说,在代理中读取一些数据,然后在发送到服务器时,添加一点标头,表示后面的 N 字节数据来自流 M。然后在服务器端,你需要有一点一段代码,用于解压数据、单独处理每个流中的数据,并将结果与类似的标头打包在一起,表示以下 N 个字节的回复用于流 M。 为了提供一点额外的保证(以及在出现问题时恢复同步的能力),您可能还需要在每帧的开头和结尾添加相当独特的模式。

回答 1 投票 0

通过 SSL 连接向转发 HTTP 代理发送 CONNECT 请求?

我正在编写一个 HTTP 代理,但无法理解通过 TLS 发出 CONNECT 请求的一些细节。 为了获得更好的了解,我正在尝试使用 Apache 来观察它如何交互...

回答 4 投票 0

无法连接到 Aurora Postgresql 集群的 RDS 代理

我为 Amazon Aurora Postgresql 数据库集群创建 AWS RDS 代理。 如果我在同一 VPC 中的 Bastion 主机中打开 shell,我可以连接到数据库,但无法连接到代理: # 公关...

回答 1 投票 0

无法通过 Charles 调试代理调试 Vine 和 Twitter API,而 Facebook、Flickr 和任何其他 API 可以

我正在尝试使用 Charles 调试代理来调试 Vine API。我的设备中运行着 IOS 版本的 Vine 应用程序,并且我已经设置了 WiFi 代理。 我可以通过 ena 调试来自所有其他应用程序的 API 调用...

回答 2 投票 0

为什么 npm install 永远运行(在公司代理后面)?

在代理后面运行 npm install 会永远运行或非常慢(慢到我从来没有等待它完成),日志中没有任何有用的信息。 根本原因是什么? 我想...

回答 1 投票 0

获取远程http图像时出现假想错误:获取“https://$path.jpg.webp”:拨打tcp 127.0.0.1:443:连接:连接被拒绝

我正在尝试使用想象的 imageproxy 并尝试使用 DDEV 修改 Drupal 中托管的图像。 当我通过 Imageproxy 调用图像时 (http://localhost:8088/crop?width=500&hei...

回答 1 投票 0

使用 Xdebug DBGp 代理时没有 php 输出

直接从 VSCode 使用 Xdebug 时,使用两个 PHP 扩展(xdebug.php-debug、devsense.phptools-vscode)之一进行调试,一切都按预期工作。但我有一个共享环境,其中

回答 1 投票 0

在录制过程中无法让 JMeter 对站点进行身份验证

我是 Jmeter 新手,遇到以下问题。到目前为止,我已经浪费了几天的时间,我真的希望有人能提供帮助: 当我去记录网站的登录页面时(IIS托管,W...

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.