标签: proxy

动态创建代理类

我正在尝试动态创建代理类.我知道有一些非常好的框架可以做到这一点,但这纯粹是一个宠物项目作为一个学习练习,所以我想自己做.

例如,如果我有以下类实现接口:

interface IMyInterface
{
    void MyProcedure();
}

class MyClass : IMyInterface
{
    void MyProcedure()
    {
        Console.WriteLine("Hello World");
    }
}
Run Code Online (Sandbox Code Playgroud)

为了拦截这个类的方法以便记录它们,我正在创建另一个类(我的代理类版本),它实现相同的接口但包含对"真实"类的引用.此类执行操作(例如,日志记录),然后在真实类上调用相同的方法.

例如:

class ProxyClass : IMyInterface
{
    private IMyInterface RealClass { get; set; }

    void MyProcedure()
    {
        // Log the call
        Console.WriteLine("Logging..");

        // Call the 'real' method
        RealClass.MyProcedure();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后调用者调用代理类上的所有方法(我使用基本的home-brew IoC容器来注入代理类来代替真正的类).我正在使用此方法,因为我希望能够RealClass在运行时将其换出到另一个实现相同接口的类.

有没有办法ProxyClass在运行时创建并填充其RealClass属性,以便它可以用作真实类的代理?是否有一种简单的方法可以做到这一点,还是需要使用类似的东西Reflection.Emit并生成MSIL?

.net c# reflection proxy

36
推荐指数
1
解决办法
3万
查看次数

以编程方式在C#中设置浏览器代理设置

我正在编写一个winforms应用程序,需要设置Internet Explorer的代理设置,然后打开一个新的浏览器窗口.目前,我正在通过进入注册表来应用代理设置:

RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");
Run Code Online (Sandbox Code Playgroud)

进入注册表是最好的方法,还是有更推荐的方法?如果有替代解决方案,我想避免注册表更改.

c# registry proxy

35
推荐指数
4
解决办法
7万
查看次数

没有密码的NTLM代理?

我使用HTTP代理在公司Windows网络(我登录)上工作.当我使用Internet Explorer时,它神奇地使用代理而无需输入我的密码.某些其他程序似乎也管理这个,就像JavaWebStart有一个"使用浏览器设置"选项.

然而,当我使用脚本/像卷曲或wget的方案,从http取东西,或者我的Java代码我似乎需要有地方存储我的密码,这显然不是最好的安全范围内做到这一点.

如何以编程方式获得Internet Explorer所具有的无密码访问权限?

我主张这是一个堆栈溢出的问题,因为我是一个程序员,我需要我的程序/脚本,而无需在输入密码的工作,虽然我可以看到,别人可能会认为它属于在服务器故障/超级用户.

我知道像curl中的--proxy-ntlm这样的设置,但是这仍然需要一个ntlm用户名和密码.

authentication proxy curl ntlm sspi

35
推荐指数
2
解决办法
3万
查看次数

使用nginx 1.0动态proxy_pass到$ var

我试图根据环境变量将请求代理到不同的目标.我的方法是将目标url放入自定义变量$ target并将其提供给proxy_pass.

但是使用带有proxy_pass的变量似乎不起作用.这个简单的配置导致nginx的"502 Bad Gateway"响应.

server {
  listen   8080;
  server_name  myhost.example.com;
  access_log  /var/log/nginx/myhost.access.log;
  location /proxy {
    set $target http://proxytarget.example.com;
    proxy_pass $target;
  }
}
Run Code Online (Sandbox Code Playgroud)

没有变量的相同配置有效:

server {
  listen   8080;
  server_name  myhost.example.com;
  access_log  /var/log/nginx/myhost.access.log;
  location /proxy {
    proxy_pass http://proxytarget.example.com;
  }
}
Run Code Online (Sandbox Code Playgroud)

是不是真的不能以这种方式使用proxy_pass,或者我只是做错了什么?

proxy nginx

35
推荐指数
2
解决办法
4万
查看次数

node.js中的HTTPS代理服务器

我正在开发node.js代理服务器应用程序,我希望它支持HTTPHTTPS(SSL)协议(作为服务器).

我目前正在使用node-http-proxy这样的:

const httpProxy = require('http-proxy'),
      http = require('http');

var server = httpProxy.createServer(9000, 'localhost', function(req, res, proxy) {
    console.log(req.url);
    proxy.proxyRequest(req, res);
});

http.createServer(function(req, res) {
    res.end('hello!');
}).listen(9000);

server.listen(8000);
Run Code Online (Sandbox Code Playgroud)

我设置我的浏览器使用HTTP代理localhost:8000,它的工作原理.我还想捕获HTTPS请求(即设置我的浏览器以localhost:8000用作HTTPS代理并在我的应用程序中捕获请求).你能帮帮我怎么办?

PS:

如果我订阅upgradehttpProxy服务器对象的事件,我可以获得请求,但我不知道如何转发请求并向客户端发送响应:

server.on('upgrade', function(req, socket, head) {
    console.log(req.url);
    // I don't know how to forward the request and send the response to client
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

ssl https proxy http node.js

35
推荐指数
4
解决办法
4万
查看次数

如何正确使用HTTP_X_FORWARDED_FOR?

好吧,我有一个小的身份验证问题.我的Web服务允许使用用户名和密码通过HTTP连接到我的API,但此连接也可以限制为特定的IP地址.

这意味着$_SERVER['REMOTE_ADDR']可能不正确.我已经知道任何IP信息都无法真正依赖 - 我只有在尝试添加另一层安全性时才有限制.

如果这是对我的Web服务器的请求的一般概述:

clientSERVER => clientPROXY => myPROXY => mySERVER

那么这意味着mySERVER显示REMOTE_ADDRmyPROXY而不是客户端的myPERVX,并将客户端的实际IP发送为HTTP_X_FORWARDED_FOR.

为了解决这个问题,我的Web服务有一个"可信代理"IP地址列表,如果REMOTE_ADDR是来自其中一个可信IP地址,那么它告诉我的Web服务实际的IP地址是值HTTP_X_FORWARDED_FOR.

现在问题出在clientPROXY上.这意味着(通常)mySERVER获取HTTP_X_FORWARDED_FOR具有多个IP地址的值.根据HTTP_X_FORWARDED_FOR文档,该值是以逗号分隔的IP地址列表,其中第一个IP是实际真实客户端的IP,而每个其他IP地址是代理的IP地址.

因此,如果HTTP_X_FORWARDED_FOR有多个值并且我的服务是IP限制的,我是否必须检查HTTP_X_FORWARDED_FOR针对我允许的IP列表的"最后"值并忽略实际的客户端IP?

我假设在一个系统中,我必须设置允许的IP地址列表,白名单IP地址应该是代理的IP地址而不是代理后面的IP(因为那可能是一些本地主机IP并经常更改) .

那是什么HTTP_CLIENT_IP

php ip proxy forwarding

35
推荐指数
4
解决办法
9万
查看次数

Hibernate异常_ $$ _ javassist_0无法强制转换为javassist.util.proxy.Proxy

您好我正在使用developnig java Web应用程序,当我尝试使用hibernate获取数据时,我得到了下一个异常

java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
Run Code Online (Sandbox Code Playgroud)

这里是栈跟踪

java.lang.ClassCastException: com.digitalticket.model.UserType_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:147)
    at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:75)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:771)
    at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:4613)
    at org.hibernate.event.internal.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:349)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:270)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1070)
    at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:989)
    at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:716)
    at org.hibernate.type.EntityType.resolve(EntityType.java:502)
    at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:170)
    at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:144)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1114)
    at org.hibernate.loader.Loader.processResultSet(Loader.java:972)
    at org.hibernate.loader.Loader.doQuery(Loader.java:920)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)
    at org.hibernate.loader.Loader.doList(Loader.java:2553)
    at org.hibernate.loader.Loader.doList(Loader.java:2539)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369)
    at org.hibernate.loader.Loader.list(Loader.java:2364)
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1682)
    at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380)
    at com.digitalticket.model.DAO.fetchAll(DAO.java:204)
    at com.digitalticket.controller.IndexController.handleRequestInternal(IndexController.java:22)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:154)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) …
Run Code Online (Sandbox Code Playgroud)

java orm proxy hibernate java-ee

35
推荐指数
7
解决办法
4万
查看次数

后端的Angular-CLI代理不起作用

https://github.com/angular/angular-cli#proxy-to-backend这里是一个如何代理后端的指令.我一步一步做了所有事情仍然没有代理请求.

8080 - 我的Express后端4200 - 我的Angular2前端

在Angular2项目中,我的文件proxy.cons.json内容如下:

{
  "/api": {
    "target": "http://localhost:8080",
    "secure": false
  }
}
Run Code Online (Sandbox Code Playgroud)

在Angular2 package.json中,我将start过程更改为"start": "ng serve --proxy-config proxy.conf.json"

当我输入指挥官内部npm start时,我可以看到Proxy created: /api -> http://localhost:8080.好吧,到目前为止我觉得很好.

我正在尝试发送请求(Angular2)

  constructor(private http: Http) {
    this.getAnswer();
  }

  getAnswer(): any {
    return this.http.get("/api/hello")
      .subscribe(response => {
        console.log(response);
      })
  }
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误http://localhost:4200/api/hello 404 (Not Found).我们可以看到,没有任何代理.为什么?我做错什么了吗?

要清楚.当我手动去http://localhost:8080/hello,一切正常.在后端方面没有什么可以寻找的.

proxy angular-cli angular

35
推荐指数
5
解决办法
4万
查看次数

C#webclient和代理服务器

我在源代码中使用Web客户端类来使用http下载字符串.

这工作正常.但是,公司中的客户端现在都连接到代理服务器.而问题始于此.

当我测试我的应用程序时,我不认为它可以通过代理服务器,因为不断抛出的异常是"没有来自xxx.xxx.xxx.xxx的响应,这是代理服务器的IP地址.

但是,我仍然可以导航到网站URL,它在通过代理服务器连接时在浏览器中正确显示字符串,但在我使用我的Web客户端时却没有.

我必须配置Web客户端中的某些内容以允许我从代理服务器后面访问URL吗?

using (WebClient wc = new WebClient())
{
    string strURL = "http://xxxxxxxxxxxxxxxxxxxxxxxx";

    //Download only when the webclient is not busy.
    if (!wc.IsBusy)
    {
        string rtn_msg = string.Empty;
        try
        {
            rtn_msg = wc.DownloadString(new Uri(strURL));
            return rtn_msg;
        }
        catch (WebException ex)
        {
            Console.Write(ex.Message);
            return false;
        }
        catch (Exception ex)
        {
            Console.Write(ex.Message);
            return false;
        }
    }
    else
    {
        System.Windows.Forms.MessageBox.Show("Busy please try again");
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# proxy webclient

34
推荐指数
5
解决办法
8万
查看次数

如何从命令行在os x中打开和关闭Web代理

在OS X中,通过检查Web代理(HTTP)并指定Web代理服务器等,然后单击"确定",然后单击"应用",从"系统首选项">"网络">"代理"打开和关闭Web代理.这是太多的步骤.有没有办法从命令行和shell脚本执行所有操作?

macos proxy networking

34
推荐指数
3
解决办法
2万
查看次数