有人可以帮助我或提出解决方案吗?我想从具有防火墙的计算机连接到运行 postgres 服务器的其他计算机。问题是计算机(客户端)有防火墙,我无权配置它,或者打开端口,ping 没有响应。PostgreSQL 具有开放端口的计算机(服务器),但由于防火墙的原因,我无法从另一台计算机(服务器)连接到它。我只能通过代理访问计算机。
我如何使用 Java 编程通过代理远程访问忘记防火墙的 postgres?
Java 与代理有联系。但我不知道如何将它与 postgres 连接放在一起。
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "67.210.82.198" );
System.getProperties().put( "proxyPort", "80" );
URL validateURL = new URL("http://domain.com");
URLConnection urlConnection = validateURL.openConnection();
//how put together ???
Class.forName("org.postgresql.Driver");
Connection connection = DriverManager.getConnection("jdbc:postgresql://ipPublica:5432/DataBase","user", "pass");
Run Code Online (Sandbox Code Playgroud) 我曾尝试使用 nginx (http://nginx.org/) 来限制每分钟的请求量。例如我的设置是:
server{
limit_req_zone $binary_remote_addr zone=pw:5m rate=20r/m;
}
location{
limit_req zone=pw nodelay;
}
Run Code Online (Sandbox Code Playgroud)
我在 Nginx 中发现,即使我每分钟尝试 1 个请求,我也可以在那分钟内多次返回。当然,快速刷新页面会给我一个限制页面消息,即“503 服务暂时不可用”返回码。
我想知道可以应用什么样的设置来将请求限制为每分钟 20 个请求。我并不是在寻找防洪保护,只是因为 Nginx 提供了这个功能,如果页面持续刷新,例如它会限制用户并在一段时间后让他们在延迟一段时间后返回(除非您应用 nodelay 设置)。
如果除了 HAProxy 之外还有 Nginx 的替代品(因为它很慢)。我在 Nginx 上的设置也充当了真实站点的反向代理。
我正在尝试维护与代理的连接池。我的代码如下所示:
>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它失败了:
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "urllib3/poolmanager.py", line 117, in urlopen
> response = conn.urlopen(method, u.request_uri, **kw)
> File "urllib3/connectionpool.py", line 427, in urlopen
> **response_kw)
> File "urllib3/response.py", line 195, in from_httplib
> **response_kw)
> TypeError: __init__() got an unexpected keyword argument 'proxies'
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?根据 urllib3 文档,关键字 args 被发送到 urlopen,但在这种情况下似乎没有发生。
这是urllib的链接,描述了代理关键字 arg 的用法。
我正在尝试使用 nginx 作为代理服务器来访问一些不支持 CORS 的 API。我的配置的一部分:
server {
listen 8000;
server_name localhost;
merge_slashes off;
resolver 8.8.8.8;
location ~ ^/proxy/(.*) {
proxy_pass $1;
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有传递 GET 参数,因为我遇到了与提供 none 或无效 apikey 时相同的错误:
$ curl -i 'http://localhost:8000/proxy/http://api.rottentomatoes.com/api/public/v1.0/lists.json?apikey=myapikey'
HTTP/1.1 403 Forbidden
Server: nginx/1.6.0
Date: Thu, 15 May 2014 15:33:40 GMT
Content-Type: text/javascript
Content-Length: 28
Connection: keep-alive
X-Mashery-Error-Code: ERR_403_DEVELOPER_INACTIVE
X-Mashery-Responder: prod-j-worker-us-east-1c-31.mashery.com
{"error":"Account Inactive"}
Run Code Online (Sandbox Code Playgroud)
而且我不太了解proxy_pass 文档。
我在代理后面工作,所以我需要配置我的连接。它适用于定义选项列表和调用 getURL:
opts <- list(
proxy = "http://****",
proxyusername = "****",
proxypassword = "*****",
proxyport = ****
)
getURL("http://stackoverflow.com", .opts = opts)
Run Code Online (Sandbox Code Playgroud)
我想将此选项设置为默认值,但仍然找不到任何可行的解决方案。你有什么建议吗?
谢谢你。
我尝试向我的Apache CXF 3客户端 API添加代理。
ClientBuilder.newClient().target(serverUri)
.request()
.post();
Run Code Online (Sandbox Code Playgroud)
在 Jersey 实现中,我使用 ClientConfig :
ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI, proxyAddress);
ClientBuilder.newClient(config) ...
Run Code Online (Sandbox Code Playgroud)
我想用 CXF 3 做同样的事情而不使用他们的特定客户端(我使用 JAX-RS 客户端实现)并且不在 JVM 上设置代理。
任何帮助都将得到回报 ;)
编辑 :
解决方案的开始可以是:
client.property("http.proxy.server.uri", proxyUri);
client.property("http.proxy.server.port",proxyPort);
Run Code Online (Sandbox Code Playgroud)
但我没有找到代理身份验证的属性。
设置 application 变量时trust proxy,第二个参数是否app.set意味着服务器信任来自 127.0.0.1 或 TO 127.0.0.1 的所有请求?
例如:
app.set('trust proxy', 'loopback');
// or
app.set('trust proxy', '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)
进而
var sess = {
proxy: true
cookie: {
httpOnly: true,
secure: true
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档,允许使用多种类型的值作为第二个参数:
布尔值
如果为 true,则客户端的 IP 地址被理解为 X-Forwarded-* 标头中最左侧的条目。
如果为 false,则应用程序被理解为直接面向 Internet,并且客户端的 IP 地址来自 req.connection.remoteAddress。这是默认设置。
IP地址
要信任的 IP 地址、子网或一组 IP 地址和子网。以下列表显示了预配置的子网名称
我正在做宏来从谷歌游戏商店中提取安卓应用程序信息。我的客户需要世界上所有 android 应用程序的详细信息。我留在印度,因为我无法访问其他国家/地区的应用程序。
请帮助我访问所有国家/地区的 google play 应用程序。
我正在使用 seelenum 进行刮擦。
我有一种情况,我可以使用curl通过代理服务器从互联网上下载一个包使用该命令
curl -x http://<proxy_host>:<proxy_port> --proxy-user <proxy_user>:<proxy_user_password> -L http://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/<package>.rpm -o <package>.rpm
但是,如果我使用命令设置代理:
setenv HTTP_PROXY http://<proxy_user>:<proxy_user_password>@<proxy_host>:<proxy_port>
然后我尝试使用命令获取包:
curl -O http://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/package.rpm -o package.rpm
它不起作用,它只是在很长一段时间后返回时间.我的意图是提供给该服务器访问内部网络外部的互联网,我正在使用curl来测试它.
操作系统是RedHat 6.9,我使用的shell是'/ bin/tcsh'.
我在这种情况下做错了什么?
谢谢你的帮助.
我正在创建一个脚本,用于爬网一个网站以收集一些数据,但是问题是,在请求过多后,它们阻止了我,但是使用代理,我可以发送的请求要多于当前的请求。我已经将代理与chrome选项集成在一起--proxy-server
options.add_argument('--proxy-server={}'.format('http://ip:port'))
但是我使用的是付费代理,因此需要身份验证,如下面的屏幕截图所示,它提供了用户名和密码的警告框
options.add_argument('--proxy-server={}'.format('http://username:password@ip:port'))
但这似乎也不起作用。我在寻找解决方案,并在下面找到解决方案,并与chrome扩展代理自动身份验证一起使用,而没有chrome扩展
proxy = {'address': settings.PROXY,
'username': settings.PROXY_USER,
'password': settings.PROXY_PASSWORD}
capabilities = dict(DesiredCapabilities.CHROME)
capabilities['proxy'] = {'proxyType': 'MANUAL',
'httpProxy': proxy['address'],
'ftpProxy': proxy['address'],
'sslProxy': proxy['address'],
'noProxy': '',
'class': "org.openqa.selenium.Proxy",
'autodetect': False,
'socksUsername': proxy['username'],
'socksPassword': proxy['password']}
options.add_extension(os.path.join(settings.DIR, "extension_2_0.crx")) # proxy auth extension
Run Code Online (Sandbox Code Playgroud)
但以上两种方法均不能正常工作,因为似乎在上述代码之后,代理身份验证警报消失了,并且当我通过谷歌搜索我的IP并确认其无效时检查了我的IP时。
请任何可以帮助我在chromedriver上认证代理服务器的人。