问题标签 [little-proxy]

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.

0 投票
0 回答
213 浏览

little-proxy - LittleProxy clientToProxyRequest 调用了两次

我将 LitteProxy 配置为反向代理并尝试实现过滤器。当我发送 HTTP GET 时,会调用 clientToProxyRequest 过滤器适配器两次。一次使用DefaultHttpRequest作为httpObject,第二次使用LastHttpContent。这可能与块有关吗?我该怎么做?

过滤器创建为:

0 投票
1 回答
316 浏览

java - Littleproxy 无限循环

我需要验证一些用户请求,所以我正在尝试使用 LittleProxy。这个想法是让它对用户透明(iptables > littleproxy > origin server)。

所以我使用 iptables 将流重定向到 LittleProxy(正在监听 127.0.0.1:3127),如下所示:

如果我使用 启动它withTransparent(true),我会收到错误400 Bad Request to URI。这是由于 RFC 7230 合规性而发生的。

所以我尝试按如下方式启动它,并更改请求 URI:

并重写方法如下:

但是更改 URI 会导致 LittleProxy 无限循环。每次添加一个新的Via头。

我也尝试过使用.withAllowRequestToOriginServer(true),但.withTransparent(true)也会导致无限循环。

学习DirectRequestTest.java时我发现我可以测试标头并检查它是否已经有“Via”,但我不想中止请求。我仍然希望 LittleProxy 调用源服务器,检索并向用户提供响应。

所以我的问题是,我如何用 LittleProxy 实现这个场景?

0 投票
0 回答
806 浏览

ssl - HTTPS 流量不适用于 VPN 和代理

我有:

  1. 我连接的 VPN 服务器 (SoftEther)。
  2. IP 表规则将所有流量从 VPN 发送到代理服务器。
  3. 代理服务器 (Java)。我使用 LittleProxy https://github.com/adamfisk/LittleProxy。它不会拦截 HTTPS 流量。

所有这些项目都是这样连接的:

VPN 客户端 ===> VPN 服务器 ===> 代理服务器 ===> 互联网

HTTP 流量工作正常,但 HTTPS 不能。

当我尝试访问https://google.com时,我在 Chrome 中看到一个错误:

This site can't provide a secure connection

当我将浏览器直接连接到代理服务器时 - HTTPS 工作正常
当我只连接到 VPN 服务器时 - HTTPS 工作正常。

如果我将 VPN 切换到 OpenVPN,也会出现同样的问题。

在嗅探流量后,我发现 HTTPS 请求正试图通过 HTTP 协议到达 HTTPS 地址。重定向似乎有一些问题,因为当我只是去 www.google.com 时,经过 2 次重定向(由 google 生成)后,我可以通过 https 访问 google,但是当我输入https://google.com -错误。

在 Wireshark 中出现 400 错误:

Expert Info (Warning/Security): Unencrypted HTTP protocol detected over encrypted port, could indicate a dangerous misconfiguration.

我的 IP 表规则:

其中 172.31.64.145:9090 - 代理服务器的 IP。

VPN 服务器和代理服务器在同一个 AWS 实例上运行。

0 投票
0 回答
486 浏览

java - 使用 Netty 和 LittleProxy 将 MITM 代理添加到现有的基于代理的 HTTPS 连接

我有一个后端应用程序堆栈,它的作用类似于 Web 浏览器,并通过外部 HTTP 代理服务连接到 Internet 上的 HTTP 和 HTTPS 服务器。这一切都很好。所以我们正在谈论一个看起来像这样的现有管道:

现在我想添加一个我们自己的 MITM 代理服务器来拦截我们的客户端请求并在它们被发送到外部代理服务之前对其进行修改。所以我想要:

现在,我有以下管道工作:

我已经使用 LittleProxy 实现了 MITM 代理,它使用 Netty 作为其底层网络层包,全部用 Java 编写。我正在使用提供 MITM HTTPS 支持的 LittleProxy 扩展。我自己的额外代码很少,这很好用。现在我想将外部代理重新引入管道。

有人能告诉我如何让 LittleProxy/Netty 通过外部代理服务处理与外部网站的连接,让我进入我想要的完整管道吗?那将非常感激!

或者,如果有人可以推荐另一个起点,而不是 LittleProxy 来实现我正在寻找的 MITM 服务器,那可能会给我一条路。

0 投票
1 回答
195 浏览

little-proxy - littleproxy receive only DefaultHttpResponse impl of HttpObject

I am using littleproxy for analize responses in my app, there is my extension of HttpFiltersAdapter class where i override proxyToClientResponse method, input parameter for method is HttpObject

HttpObject has several extension classes - DefaultLastHttpContent, DefaultFullHttpResponse, DefaultHttpContent, DefaultHttpResponse (probably exist more classes but in prervious tests i saw only these), but now i get only DefaultHttpResponse which has not content field although my responses has content(i use my mock server for responses, and use other not my links for test via charles proxy)

other link, for example http://www.creativebloq.com/web-design/examples-of-html-1233547

What may be wrong with it? i need get content from response or what is way to get content from DefaultHttpResponse(сast to other types with content is inpossible)?

0 投票
0 回答
240 浏览

mitmproxy - 使用 LittleProxy 为 https url 返回预定义的 html 内容

我正在使用小代理https://github.com/adamfisk/LittleProxy创建一个测试代理,它为给定的 url 返回一些预定义的 html 内容。相同的代码:

我正在使用以下代码调用 url 的代理:

对于 http url,http get 调用工作正常,但对于 https url,调用失败,因为它对 https url 发出 CONNECT 请求。有没有办法在小代理中为https url 返回相同的响应?

在我想为 https url 发送一些预定义内容而不是实际调用 Web 服务器的用例中,我如何使用 MITM。

0 投票
0 回答
463 浏览

java - 如何使用 BrowserMob 跟踪 Selenium 中的特定请求?

我已经在嵌入式模式下使用BrowserMob代理实现了 Selenium。

我还向代理添加了一个请求和响应过滤器,它成功过滤了所有请求和响应。但是我如何跟踪特定请求,例如在该请求收到响应时实现回调函数。我还需要根据无法设置为静态变量的响应修改一些对象,因为会同时运行多个测试。有什么办法可以做到这一点。?任何帮助或信息将不胜感激。

当前过滤器实现:(刚刚添加了文档中的代码)

0 投票
1 回答
1181 浏览

browsermob-proxy - 如何让 browsermob-proxy 记录所有响应主体

我在使用 browsermob-proxy 及其 har 导出功能时遇到问题。未记录某些响应正文(缺少整个“文本”字段)

我的设置(使用 browsermob-proxy 2.1.4)

curl -X POST http://localhost:8080/proxy?port=9091

curl -X PUT "http://localhost:8080/proxy/9091/har?captureHeaders=true&captureCookies=true&captureContent=true"

一些回应很好:

"response": { "status": 201, "statusText": "Created", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{ "name": "Cache-Control", "value": "max-age=0, no-cache, no-store" }, { "name": "Content-Type", "value": "application/json" }, { "name": "Date", "value": "Thu, 15 Feb 2018 13:07:39 GMT" }, { "name": "Location", "value": ... }, { "name": "Pragma", "value": "no-cache" }, { "name": "Render-Time", "value": "8" }, { "name": "Server", "value": "openresty" }, { "name": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" }, { "name": "transfer-encoding", "value": "chunked" }, { "name": "Connection", "value": "keep-alive" }], "content": { "size": 8607, "mimeType": "application/json", "text": "{ <actual json body> }", "comment": "" }, ...

但有些不是(可能是特殊的内容/mime 类型?或者可能是 gzip 内容编码?)

"response": { "status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{ "name": "Cache-Control", "value": "max-age=0, no-cache, no-store" }, { "name": "Content-Encoding", "value": "gzip" }, { "name": "Content-Type", "value": "application/some.custom.type-v1+json" }, { "name": "Date", "value": "Thu, 15 Feb 2018 13:07:39 GMT" }, { "name": "Pragma", "value": "no-cache" }, { "name": "Render-Time", "value": "92" }, { "name": "Server", "value": "openresty" }, { "name": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" }, { "name": "Vary", "value": "Accept-Encoding" }, { "name": "Content-Length", "value": "1978" }, { "name": "Connection", "value": "keep-alive" }], "content": { "size": 7429, "mimeType": "application/some.custom.type-v1+json", "comment": "" < there's nothing else here!! > }, "redirectURL": "", "headersSize": 444, "bodySize": 1978, "comment": "" }, ...

哦,是的,两个请求都通过 https,使用 MITM。

0 投票
0 回答
427 浏览

java - 通过代码捕获 HTTP 流量 - 有哪些不同的选项?

我已经为此工作了一段时间 - 我正在构建一个模块,该模块需要捕获进出主机的 HTTP/HTTPS 流量。我最初选择的语言是 Java,我可以执行以下操作:

  1. 使用 LittleProxy 创建代理服务器
  2. 修改我的浏览器设置以使用我创建的代理
  3. 在浏览器上执行交易,以便我的代理可以记录它们。

这工作正常,除了以下问题:

  1. 对于使用我的应用程序的人来说,这会产生额外的手动开销来手动设置浏览器上的代理详细信息(尽管这可以通过更改浏览器设置和启动的代码来完成)。
  2. 我的应用程序只能记录来自指向代理的特定浏览器的交易。

我想以消除用户开销的方式增强此模块。类似于 Wireshark、Fiddler 和 LoadRunner (VuGen)。我的问题是,他们是怎么做到的?他们是否还在幕后的某个地方运行代理?还是他们从网络、操作系统或其他层嗅探 HTTP 流量?

所以准确地说,我有以下问题:

  1. 创建代理是捕获 HTTP 请求的唯一方法吗?
  2. 我可以从操作系统级别(没有代理)跟踪请求/响应吗?如果是,那么 Java 是否足够好,还是我应该倾向于 .NET(C# 之类的)?
  3. 如果代理是唯一的方法,我可以利用 Fiddler 或 Wireshark 吗?他们是否有我可以合并到我的代码中的 API?(我没有在他们的文档中看到任何东西——可能我看起来不够努力)

任何信息都会帮助我找到方向。请帮忙!

谢谢,斯里拉姆斯里达兰

0 投票
0 回答
341 浏览

java - LittleProxy 操纵发送的请求和接收的响应

我们的许可证非常有限,所以我是否可以通过一些实用程序/代理从云应用程序中获取相同的数据,这些实用程序/代理在将数据存储到我们的应用程序服务器之前可以为我们做很少的数据操作。

考虑用例,我在 GoogleApps 上只有 100 个用户,我想获取 10K 用户数据。

我们可以拦截所有通过例如https://localhost:8080/my-app 的请求吗

现在,我想要一个中间人,即拦截器,它基本上可以欺骗我们的应用程序服务器,云系统上有 N 个(例如 10K)用户。

由于我的应用程序服务器认为云系统上仍然存在许多用户,因此它将继续生成对下一个用户数据块的请求,直到我们不跨越 N

它还将使用递增编号(例如 User1、User2、...、User100 以及从下一个块 User101、...、User100000 等)处理发送到我的应用程序服务器的数据。

如何使用LittleProxy实现它

https://github.com/adamfisk/LittleProxy