搜狗代理服务器程序,网上已经有
用 Python 实现的版本。这个版本在某些情况下(例如迅雷下载)性能不够好,于是我用 C++ 实现了一个版本,基于
POCO 框架开发,应当具有不错的可移植性。完整的源代码如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <vector> #include <string> #include <Poco/ErrorHandler.h> #include <Poco/Net/Socket.h> #include <Poco/Net/HTTPServer.h> #include <Poco/Net/HTTPServerRequest.h> #include <Poco/Net/HTTPServerRequestImpl.h> #include <Poco/Net/HTTPServerResponse.h> #include <Poco/Net/HTTPRequestHandler.h> #include <Poco/Net/HTTPClientSession.h> #include <Windows.h> using namespace std; using namespace Poco; using namespace Poco::Net; class EH : public ErrorHandler { public: virtual void exception(const Exception& exc) { puts(exc.message().c_str()); fflush(stdout); } virtual void exception(const std::exception& exc) { puts(exc.what()); fflush(stdout); } virtual void exception() { puts("Unknown exception"); fflush(stdout); } }; const int BUFFER_SIZE = 65536; char addressFormat[128]; int lower, upper; class ProxyService : public HTTPRequestHandler { HTTPClientSession client; static unsigned int hashTag(const string &s) { unsigned int code = s.length(); for (int i = 0; i < s.length() / 4; ++i) { unsigned int a = (s[i * 4] & 0