问题标签 [transparentproxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 排队方法调用 - 知道怎么做吗?
我编写了一个高度异步的应用程序。
我正在寻找一种方法来排队方法调用,类似于 BeginInvoke / EndInvoke 所做的......但在我的 OWN 队列中。原因是我有自己的优化消息队列系统,使用线程池,但同时确保每个组件在请求中都是单线程的(即一个线程只处理一个组件的消息)。
我有很多消息来回传递。对于有限的使用,我真的很希望能够将带有参数的消息调用排队,而不必为了进行大量管理调用而定义我自己的参数、方法包装/展开。我也不总是想绕过队列,我绝对不希望发送服务等待其他服务响应。
有人知道拦截方法调用的方法吗?为此使用透明代理/虚拟代理的某种方式?;) 服务组件?我希望这尽可能少的开销;)
.net - 当我只知道透明代理时如何获取 RealProxy
我有一个透明代理,例如由 WCF 生成的一个:
如何从透明代理中获取 RealProxy?
ipv6 - IPV6 的 TPROXY
我有自己的 IPV6 NAT 模块。我需要 TPROXY 支持。是否有任何补丁可供下载?我使用的是 2.6.32-71 内核。
linux - TPROXY - 获取准确的目标/远程 IP 地址
将最新的 TPROXY 与 Linux 内核一起使用,我将如何获取远程/目标机器的 IP 地址?我假设本地/源端点是从accept()
.
http-headers - 放置 HTTP 连接的实际问题:最后的标头
将 HTTP Connection: 字段放在标头末尾是否有任何已知问题?
来自标准(RFC2616,第 4.2 节):
首先发送通用头字段(包括
Connection
),然后是请求头或响应头字段,并以实体头字段结束是“良好做法”。
如果我违反了Connection
HTTP 标头的“良好实践”,我会受到影响吗?
wcf - 如何在 ASP.NET 应用程序中创建可以将接口实例作为透明代理返回的 WCF Web 服务
我的用例:
- 我已经有一个工作的 ASP.NET 应用程序
- 我想实现一个新的 Web 服务作为该应用程序的一部分
- 我应该使用 WCF 服务 (*.svc),而不是ASP.NET Web 服务 (*.asmx)
- 该服务需要有一个操作,我们称之为它
GetInterface()
,它返回一个接口的实例。该实例必须驻留在服务器上,而不是序列化到客户端;在该接口上调用的方法必须在服务器上执行。
这是我尝试过的(请告诉我哪里出错了):
为了对此进行测试,我创建了一个新的ASP.NET Web 应用程序项目,名为
ServiceSide
.在那个项目中,我使用“添加→新项目”添加了一个WCF 服务。我叫它
MainService
。这既创建了一个MainService
类,也创建了一个IMainService
接口。现在我创建了一个新的类库项目
/li>ServiceWorkLibrary
,它只包含要在客户端和服务器之间共享的接口声明,没有其他内容:回到
ServiceSide
,我替换了接口中的默认DoWork()
方法IMainService
以及MainService
类中的实现,并且我还为共享添加了一个简单的实现IWorkInterface
。它们现在看起来像这样:现在运行这个应用程序“工作”,因为它在浏览器中为我提供了默认的 Web 服务页面,其中显示:
您已经创建了一个服务。
要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的 svcutil.exe 工具执行此操作,语法如下:
这将生成一个配置文件和一个包含客户端类的代码文件。将这两个文件添加到您的客户端应用程序并使用生成的客户端类来调用服务。例如:
那么就到客户端了。在单独的 Visual Studio 中,我创建了一个使用新解决方案调用的新控制台应用程序
ClientSide
项目。我添加了ServiceWorkLibrary
项目并从ClientSide
.然后我运行了上面的
svcutil.exe
调用。这生成了一个MainService.cs
和一个output.config
,我将它们添加到ClientSide
项目中。最后,我在方法中添加了以下代码
/li>Main
:这已经失败,在构造函数调用中出现了一个神秘的异常。我设法通过重命名
output.config
来解决这个问题App.config
。我注意到返回类型
GetInterface()
是object
而不是IWorkInterface
。有谁知道为什么?但是让我们继续...现在当我运行它时,我
CommunicationException
在调用时得到一个GetInterface()
:基础连接已关闭:连接意外关闭。
我该如何解决这个问题,以便获得IWorkInterface
我期望的透明代理?
我尝试过的事情
我尝试添加
[KnownType(typeof(WorkInterfaceImpl))]
到WorkInterfaceImpl
. 如果我这样做,我会在同一个地方得到一个不同的异常。现在是一条NetDispatcherFaultException
消息:格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:GetInterfaceResult时出错。InnerException 消息是“第 1 行位置 491 中的错误。元素“http://tempuri.org/:GetInterfaceResult”包含映射到名称“http://schemas.datacontract.org/2004/07/”的类型的数据服务端:WorkInterfaceImpl'。反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“WorkInterfaceImpl”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。
InnerException
提到的是带有SerializationException
消息的:第 1 行位置 491 出错。元素“http://tempuri.org/:GetInterfaceResult”包含映射到名称“http://schemas.datacontract.org/2004/07/ServiceSide:WorkInterfaceImpl”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“WorkInterfaceImpl”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
请注意这似乎表明系统正在尝试序列化该类型。它不应该那样做。它应该生成一个透明代理。我如何告诉它停止尝试序列化它?
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
我尝试在类中添加一个属性 ,WorkInterfaceImpl
。没有效果。我尝试将接口
[ServiceContract]
上的属性IWorkInterface
(在共享库中声明ServiceWorkLibrary
)更改为[ServiceContract(SessionMode = SessionMode.Required)]
. 也没有效果。我还尝试将以下魔法
system.diagnostics
元素添加到Web.config
inServerSide
:这确实会
c:\traces.svclog
按承诺生成文件,但我不确定我能否理解它的内容。我已将生成的文件发布到此处的 pastebin。您可以使用更友好的 UI 来查看此信息svctraceviewer.exe
。我这样做了,但坦率地说,所有这些东西并没有告诉我任何事情......
我究竟做错了什么?
php - Tor 网络爬虫
好的,这就是我需要的。我有一个基于 PHP 的网络爬虫。它可以在这里访问: http ://rz7ocnxxu7ka6ncv.onion/ 现在,我的问题是我的蜘蛛实际上爬取页面需要在 SOCKS 端口 9050 上这样做。问题是,我必须通过 Tor 隧道连接,以便它可以解析 .onion 域,这就是我要索引的内容。(仅以 .onion 结尾。)我使用 php crawl.php 从命令行调用此脚本,并添加适当的参数来抓取页面。这是我的想法:有什么方法可以强制它使用 Tor?或者我可以强制我的整个机器通过 Tor 隧道,以及如何?(就像强制所有流量通过 127.0.0.1:9050)也许如果我设置全局代理设置,php 会尊重它们吗?
如果我的任何解决方案有效,我会怎么做?(请逐步说明,我是菜鸟。)
我只想创建自己的 Tor 搜索引擎。(不要推荐我的 p2p 搜索引擎——这不是我想要的——我知道它们存在,我做了我的功课。)如果你有兴趣看一下,这里是爬虫源:也许是心地善良的人可以修改它以对所有爬取请求使用 127.0.0.1:9050 吗? http://pastebin.com/kscGJCc5
python - 如何杀死以 root 身份运行的无法杀死的 Python 进程
我在 10.7.3、MBA 和最新固件更新上运行sshuttle时遇到了一个恼人的问题——在我停止它(ctrl+c 两次)、连接松动或合上盖子之后,我无法恢复它,直到我重新启动系统。重新启动所花费的时间明显多于通常所需的时间。我试图刷新 ipfw 规则 - 没有帮助。
您能否建议我如何恢复 sshuttle 连接(无需重新启动操作系统)?
以下进程仍以 root 身份运行,我不知道如何杀死(尝试sudo kill -9 <pid>
但没有运气):
我用来运行代理的命令:
我尝试恢复连接的最后一条消息:
更新:
c# - 以编程方式区分高匿名代理、匿名代理、透明代理
假设我有一个代理 IP 地址,但没有关于它的信息。
这是否可以从头开始知道它是哪种代理(远程网络服务器不知道我在代理后面,远程网络服务器知道我在代理后面但不知道我的 IP,远程网络服务器知道这两个信息) ?
是否有一个简单的测试来验证我在导航时知道哪些关于我的信息?
[编辑]
如果有人有一个简单的答案,比如“不,因为 [等]”,他会受到欢迎。我的第一个问题是“是否可行”。
c# - 结合 IIS 7.5 的动态语言运行时中的错误
我为这个问题的长度道歉,但我认为你们都会觉得值得。在我开始之前,让我说我真的在尝试制作一个独立的控制台应用程序,但遗憾的是这被证明是不可能的。该错误不会发生在控制台应用程序中。它不会发生在自包含的 ASP.NET 应用程序中。它仅在 Windows 7 上的 IIS 7.5 中运行时发生。
该错误似乎与动态语言运行时有关,因为它涉及__TransparentProxy
(通过 WCF)和dynamic
变量(int)的组合。产生问题的那一行是调用一个静态方法(恰好不包含方法体),同时传入代理和动态 int。
一旦调用该方法,w3wp.exe 进程就会占用整个 CPU 并开始非常迅速地增加内存(对我来说大约每秒 100 兆,尽管它可能由于 GC'ing 而逐渐减少)。
要重现此错误,请在 Visual Studio 中创建一个新的 ASP.NET 网站(“新建”|“项目”“C#”|“Web”|“ASP.NET Web 应用程序”)。然后在 IIS 中创建一个新站点,其主目录是您的新项目。(另外,授予“Everyone”对该文件夹的完全读/写权限,并确保应用程序池使用 .NET 4.0)为新站点提供特定端口,例如 7080。最后,将此代码粘贴到 Global.asax.cs 中:
http://localhost:7080
现在通过(或您选择的任何端口)在浏览器中访问该站点。准备好任务管理器,因为在确认报告的症状后,您需要终止 w3wp.exe 进程。
要确认代理和动态正在协同工作以显示此错误,请更改此行:
到:
重试,您会发现问题已经消失并且页面已加载。现在将其更改回dynamic
然后更改此行:
到:
重试,你会再次注意到在这种情况下问题也消失了。
最后,如果我附加调试器并全部中断,我可以看到它在卡在这个方法调用中时在做什么。它似乎总是显示类似:
mscorlib.dll!System.RuntimeMethodHandle.GetDeclaringType(System.IRuntimeMethodInfo 方法) + 0x2f 字节
mscorlib.dll!System.Reflection.Emit.DynamicResolver.ParentToken(int token) + 0x1f3 字节
[本机到托管转换]
[托管到本机转换]
mscorlib.dll!System.Reflection.Emit.DynamicMethod.CreateDelegate(System.Type delegateType, object target) + 0x29 字节
System.Core.dll!System.Linq.Expressions.Expression>.Compile() + 0xbb 字节
System.Core。 dll!System.Runtime.CompilerServices.CallSiteBinder.BindCore>(System.Runtime.CompilerServices.CallSite> site, object[] args) + 0x10a 字节
System.Core.dll!System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3(System.Runtime.CompilerServices.CallSite 站点 = {System.Runtime.CompilerServices.CallSite>},WebApplication1.Global arg0 = {ASP.global_asax},WebApplication1.Global.IFooServices arg1 = {System.Runtime.Remoting.Proxies.__TransparentProxy},对象 arg2 = 5) + 0x3f0 字节
WebApplication1.dll!WebApplication1.Global.Application_Start(object sender = {System.Web.HttpApplicationFactory},System.EventArgs e = {System .EventArgs}) 第 19 行 + 0x1b8 字节 C#
作为记录,我已经在三台不同的机器上进行了尝试,并且只能在 Windows7/IIS7.5 机器上进行复制。在 Windows Server 2008 / IIS7 盒子上没有问题。
问题是,我该如何解决这个问题并成功调用该方法?另外,为什么会这样?我不想在调用将使用 DLR 的东西时过于小心,因为它会使 IIS 崩溃。