我想制作一个简单的 Sinatra 应用程序,当我导航到“/proxy/:someurl”时,我会看到直接导航到 :someurl 的确切内容,也就是一个简单的网络代理,有点像一个完整的页面 iframe。
做这个的最好方式是什么?
我正在尝试使用 Node 的请求模块向 https url 发出请求。下面的代码片段。
var request = require('request')
,r = request.defaults(
{'proxy':'https://localhost:8443',
strictSSL: false,
rejectUnauthorized: false,
});
function sendHttpsReq(){
r.get('https://my.https.url/api/model', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
});
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,如果我使用http代理并发出http请求,代理服务器会收到请求。但对于通过 https 代理的 https url,代理服务器永远不会收到请求。我正在使用在本地服务器上运行的基于节点 http 代理的简单代理服务器。
我仍然是 python 的新手,即使在尝试理解 Requests 模块的不同方法并阅读那里之后,也无法弄清楚如何处理这个错误以及如何处理它以避免它。
下面是简单的要求我用其中线环通过与不同的URL我试图访问一个文本文件,Ð的字典包含我正在使用的代理众多的URL列表。
import requests
import collections
# [...]
d = collections.deque(proxies)
with requests.session() as r:
d.rotate(-1)
page = r.get(line.rstrip(), proxies=d[0])
Run Code Online (Sandbox Code Playgroud)
它可以完美运行,直到列表中的代理之一出于某种原因超时并强制脚本引发此错误:
ProxyError Traceback (most recent call last)
C:\Python27\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
195 else:
196 filename = fname
--> 197 exec compile(scripttext, filename, 'exec') in glob, loc
198 else:
199 def execfile(fname, *where):
C:\Users\Christopher Fargere\desktop\python\quick_scraper.py in <module>()
72 with requests.session() as r:
73 d.rotate(-1)
---> 74 page = r.get(line.rstrip(), proxies=d[0])
75 print …Run Code Online (Sandbox Code Playgroud) 我尝试使用 angular.js 教程应用程序运行 Node,但发现 npm isntall 没有正常运行。
我得到了一个奇怪的旋转小角色,它似乎永远不会停止。
我运行 npm install -verbose 并得到以下调试跟踪:
216 error network tunneling socket could not be established, cause=connect ETIMEDOUT
216 error network This is most likely not a problem with npm itself
216 error network and is related to network connectivity.
216 error network In most cases you are behind a proxy or have bad network settings.
216 error network
216 error network If you are behind a proxy, please make sure that the
216 …Run Code Online (Sandbox Code Playgroud) 我有一个从 Web 服务中检索信息的代理存储,我想以一种类似于网格的方式在面板中显示该信息,在其中我设置了“dataIndex”参数以绑定到检索到的数据中。
我怎样才能在没有额外编码的情况下实现这个目标,这可能吗?
像这样的东西:
代理店:
Ext.define('MyStore', {
extend: 'Ext.data.Store',
alias: 'store.myStore',
model: 'myModel',
autoload: true,
proxy: {
type: <wsType>,
url: <wsUrl>
},
scope: this
});
Run Code Online (Sandbox Code Playgroud)
控制板:
Ext.define('<myPanel>', {
extend: 'Ext.panel.Panel',
...
store: Ext.create(<myStore>),
...
items: [
{
xtype: 'titlePanel',
cls: 'titlePanel',
html: '<div class="titlePanel"><h1>My Title</h1></div>',
},
{
xtype: 'form',
layout: 'vbox',
cls: 'whitePanel',
items: [
{
xtype: 'panel',
layout: 'column',
items: [
{
xtype: 'displayfield',
displayField: 'name',
dataIndex: 'name',
fieldLabel: Ext.locale.start,
name: 'start'
},
...
Run Code Online (Sandbox Code Playgroud) BS 有几篇关于代理/防火墙的文章。
1) https://www.browserstack.com/local-testing#modifiers
2) https://www.browserstack.com/downloads/Local-Testing-Internals.pdf
在参考文献 2 中,似乎 BS 人们想到的唯一代理/防火墙方案是:BS 本地(和内部服务器)和 BS 基础设施之间存在防火墙。
然后在参考文献 1 中,我完全困惑于:
BrowserStackLocal.exe --key ACCESS_KEY --proxy-host <proxy_host> --proxy-port <proxy_port>
BrowserStackLocal.exe --key ACCESS_KEY --local-proxy-host <browsermob_proxy_host> --local-proxy-port <browsermob_proxy_port> --local-proxy-user <proxy_username> --local-proxy-pass <proxy_password>
Run Code Online (Sandbox Code Playgroud)
何时使用其中之一?
另外我在参考文献 1 中不明白,他们谈论“代理背后”和“防火墙或 VPN 后面”有什么区别。假设我在受防火墙保护的企业环境中进行测试,那么“代理背后”是什么?
有人会澄清吗?
我有一个充当代理服务的Clojure应用程序。目标是通过路径“ / grafana” 将请求代理到http://127.0.0.1:3000(Grafana服务),因此,如果我通过浏览器访问http://127.0.0.1/grafana,它应该代理我的请求到端口3000并显示Grafana的UI。
我遇到的问题是在浏览器中收到ERR_INVALID_CHUNKED_ENCODING响应。在Wireshark中,对端口3000的请求显示HTTP响应重新组合了3个TCP数据包。但是,对通过我的代理的请求的响应未进行重组,从而导致分块错误。有人对如何解决这个问题有任何想法吗?
谢谢。
我使用 apache 作为代理服务器来接受一个端口上的传入请求,并将它们重定向到另一个帖子上的目标(基于传入端口),作为 VirtualHost 条目的示例:
<VirtualHost *:444>
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias mydomain.com
ProxyPass / http://destination_IP:6444/
ProxyPassReverse / http://destination_IP:6444/
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我的问题是,当请求到达目标服务器时,它显示的是我的公共 IP 地址(apache 代理服务器的 IP 地址),而不是原始客户端 IP 地址。
我试图让mod_remoteip与a2enmod remoteip,并添加以下到apache2.conf文件:
LoadModule remoteip_module modules/mod_remoteip.so
Run Code Online (Sandbox Code Playgroud)
但是我没有将客户端 IP 地址转发到目标服务器,它仍然显示为我自己的(代理服务器公共 IP 地址)。
我无法修改目标服务器上的任何内容,因此我需要在自己的代理服务器上进行解析。
在这种情况下如何传递客户端 IP 地址?
谢谢你。
我在项目上使用webpack-dev-server。项目使用Spring Boot + Tiles + Vue + Webpack。
环境:
OS: Mac OS
Node Version: 9.4.0
NPM Version: 5.6.0
Webpack Version: 4.25.1
webpack-dev-server Version: 3.1.10
Run Code Online (Sandbox Code Playgroud)
在本地环境中,FE端口使用8080,而webpack-dev-server端口为9090。Webpack捆绑的文件在/ front / static-dev / build /中创建。因此,我使用如下所示的代理选项。
devServer: {
publicPath: 'http://localhost:9090/front/static-dev/build/',
port: 9090,
proxy: {
'/**': {
target: 'http://localhost:8080',
secure: false,
changeOrigin: true
}
},
open: true
}
Run Code Online (Sandbox Code Playgroud)
启动webpack-dev-server后,将正常加载静态资源(例如,JSP,捆绑的js文件,CSS文件或图像等)。但是,每当我请求一些api时,webpack-dev-server都会发生相同的错误。错误日志如下。
[HPM] Error occurred while trying to proxy
request /api/v1/users/name from localhost:9090 to
http://localhost:8080 (HPE_INVALID_CHUNK_SIZE)
(https://nodejs.org/api/errors.html#errors_common_system_errors)
Run Code Online (Sandbox Code Playgroud)
请求一些API后,我检查了Eclipse上的日志,并且通常正在发出Api请求。在Chrome Consloe中,如下所示登录。
http://localhost:9090/api/v1/users/name net::ERR_CONTENT_DECODING_FAILED 502 (Bad Gateway)
Run Code Online (Sandbox Code Playgroud)
我认为问题在于回应。在Google中使用Webpack搜索HPE_INVALID_CHUNK_SIZE,找不到任何信息。
我怎么解决这个问题。
谢谢。
proxy ×10
node.js ×2
angularjs ×1
apache ×1
browserstack ×1
clj-http ×1
clojure ×1
extjs ×1
extjs6 ×1
html ×1
http ×1
networking ×1
protractor ×1
python ×1
ruby ×1
sinatra ×1
spring-boot ×1
webpack ×1