我一直在玩Poco Net库一段时间,这是非常好的.非常方便易懂.
我能够设置代理地址,并且正确地说需要407代理授权.我想是的
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
req.setCredentials(scheme, authInfo);
Run Code Online (Sandbox Code Playgroud)
我尝试了方案中的"basic","plaintext"和authInfo中的"user:password"等值.它似乎不起作用.谷歌没有帮助.
有没有人以前使用Poco Net做过这件事?或者用法是显而易见的,因为我一般不了解代理身份验证,所以我无法使用它?请指教.
编辑:经过一些更多的游戏,我认为当远程服务器期望身份验证信息登录时使用setCredentials函数.我无法找到使用Poco Net库进行代理身份验证的方法.我能够设置代理服务器和端口.如果只有没有身份验证的代理服务器,我就会这样做:
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("host", port);
session.sendRequest(req);
Run Code Online (Sandbox Code Playgroud)
需要帮忙.
编辑:基于@StackedCrooked建议的解决方案,我尝试在发出请求之前将代理身份验证详细信息设置到请求标头,并且在互联网上找到的另一种方法中,我只在发出初始请求和407错误后才设置代理身份验证详细信息来了,然后再次提出请求.两种方法都保持相同的407错误.我当前的代码如下所示:
HTTPClientSession session(uri.getHost(), uri.getPort());
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.setProxy("10.7.128.1", 8080);
req.set("Proxy-Authentication", "Basic bGVlbGE6bGVlbGExMjM=");
session.sendRequest(req);
Run Code Online (Sandbox Code Playgroud) 我在.NET 3.5中使用此代码并收到错误"远程服务器返回错误:(407)需要代理验证."
using (WebClient client = new WebClient())
{
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
try
{
string webPageStr = client.DownloadString(URL);
Console.WriteLine("OK");
}
catch (Exception ex)
{
Console.WriteLine("FAIL");
Console.WriteLine(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码可以在.NET 4.0中顺利运行,因为此行足以传递代理身份验证,而不适用于.NET 3.5.
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)
因此,我尝试了许多其他方法来解决这个问题,但没有一个工作:
1)用.替换CredentialCache.DefaultCredentials行
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain);
Run Code Online (Sandbox Code Playgroud)
2)创建新的代理对象
IWebProxy proxy = new WebProxy(proxyUrl, port);
proxy.Credentials = new NetworkCredential(user, pass, domain);
client.Proxy = proxy;
client.Credentials = new NetworkCredential(user, pass, domain);
Run Code Online (Sandbox Code Playgroud)
3)添加此行
client.UseDefaultCredentials = true;
Run Code Online (Sandbox Code Playgroud)
4)使用HttpWebRequest而不是WebClient并重复上面的每个过程.这是示例代码.
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在android studio中运行"hello world"应用程序.我的连接是通过代理.当我尝试运行"hello world app"时,android studio会显示下一个错误:
运行Prueba时出错:Gradle项目同步失败.请修复您的项目,然后重试.
如果我配置:"文件/设置 - > HTTP代理",然后下一步我的代理配置,错误是下一个:
错误:无法获取' http://jcenter.bintray.com/com/android/tools/build/gradle/0.12.2/gradle-0.12.2.pom '.从服务器收到状态代码407:需要代理身份验证(ISA Server需要授权才能完成请求.拒绝访问Web代理筛选器.)
<a href="toggle.offline.mode">Enable Gradle 'offline mode' and sync project</a>
我该如何解决这个错误?
我不确定这是否完全符合 StackOverflow 的要求,但由于我需要以编程方式执行此操作,并且我认为 SO 上的很多人都在使用 CloudFront,我认为确实如此……所以这里是:
我想隐藏对我的自定义源服务器的公共访问。
CloudFront 从自定义源中提取,但是我找不到有关在 CloudFront 后面代理时防止用户直接请求到我的源的文档或任何类型的示例,除非我的源是 S3 ...自定义源不是这种情况。
我可以使用什么技术来识别/验证请求是通过 CloudFront 代理的,而不是由客户端直接请求的?
CloudFront 文档仅涵盖与 S3 源一起使用时的这种情况。列出 CloudFront 的 IP 地址的 AWS 论坛帖子有一项免责声明,即不保证该列表是最新的,不应依赖该列表。请参阅https://forums.aws.amazon.com/ann.jspa?annID=910
我假设任何使用 CloudFront 的人都可以通过某种方式向直接请求/爬虫程序隐藏他们的自定义来源。我很感激任何让我开始的提示。谢谢。
authentication reverse-proxy cdn proxy-authentication amazon-cloudfront
我正在使用 ADB 命令
adb shell settings put global http_proxy <ip>:<port>
Run Code Online (Sandbox Code Playgroud)
效果很好。
但如果代理受用户名和密码保护,我将无法登录代理
如果你知道什么,请帮助我。
我正在测试ClickOnce应用程序部署.我在我的机器上设置了一个虚拟目录(运行IIS).我已在Visual Studio的"发布"选项卡中将http:// localhost/SampleApplication指定为"安装文件夹URL".但是,当我发布应用程序时,我收到以下错误:
警告:无法从http:// chrish/SampleApplication /下载文件.
远程服务器返回错误:(407)需要代理身份验证.发布成功.
警告:无法在http://chrish/SampleApplication/publish.htm查看已发布的应用程序 . HTTP://chrish/SampleApplication/publish.htm
请注意它是如何将我的URL从Localhost更改为我的登录名.为什么?一周前没有发生这种情况.
当我尝试运行 npm 命令时,出现错误。
错误日志重现如下:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'install',
1 verbose cli 'graph' ]
2 info using npm@6.4.1
3 info using node@v10.15.3
4 verbose npm-session 7743923ae4798761
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 407 https://registry.npmjs.org/graph 7681ms
8 silly fetchPackageMetaData error for graph@latest 407 Proxy Authentication Required: graph@latest
9 timing stage:rollbackFailedOptional Completed in 9ms
10 timing stage:runTopLevelLifecycles …Run Code Online (Sandbox Code Playgroud) 嗨,我有类似以下的东西,使URL连接并检索数据.问题是,当我点击需要身份验证的页面时,我会获得登录页面.我不确定如何在URLConnection中传递用户名和密码.我正在使用JAAS认证的网站.
import java.net.URL;
import java.net.URLConnection;
.....
URL location = new URL("www.sampleURL.com");
URLConnection yc = location.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
data += inputLine + "\n";
in.close();
Run Code Online (Sandbox Code Playgroud)
我试过这样的东西,但似乎没有用......
URL url = new URL("www.myURL.com");
URLConnection connection = url.openConnection();
String login = "username:password";
String encodedLogin = new BASE64Encoder().encodeBuffer(login.getBytes());
connection.setRequestProperty("Proxy-Authorization", "Basic " + encodedLogin);
Run Code Online (Sandbox Code Playgroud) 我知道这已被问过很多次了.我已经阅读了这里的大部分帖子和其他类似的网站.
http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/2931d21c-9ca8-4256-b213-915fad4c941b/
无济于事.这是环境
Windows Server 2008 R2 64位Visual Studio 2008 .Net Framework 3.5
这是我尝试过的
我使用代码进行了代理身份验证
WebRequest req = WebRequest.Create(requestUri + data);
req.Proxy = new System.Net.WebProxy(<ProxyURL>:<port>",true);
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
WebResponse resp = req.GetResponse();
Run Code Online (Sandbox Code Playgroud)
这工作,但看到它减慢了应用程序,我了解到我可以编辑我所做的machine.config文件.它也有效!
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy
proxyaddress="<proxyURL>:<port>"
bypassonlocal="True"/>
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
至少一天或2.然后它开始失败.
然后我把它编辑成这个
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy usesystemdefault="True"/>
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这将使用IE设置连接到代理但仍然无法正常工作.我也尝试过代码
WebProxy proxy = new WebProxy(<proxy>:<port>);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(requestUri + data), "BASIC", new NetworkCredential(<username>,<password>));
proxy.Credentials = myCache;
request.Proxy = proxy;
request.Method = "GET";
Run Code Online (Sandbox Code Playgroud)
这没用.
注意:我可以将machine.config文件复制到我的计算机(Win XP)并从那里运行.exe(没有代理代码),它工作正常. …
我正在使用以下代码作为代理。但是,当chrome启动时,会弹出弹窗,并且程序会被锁定。
public async void StartDriver(string proxy)
{
var proxys = new Proxy();
ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
ChromeOptions chromeOptions = new ChromeOptions();
bool flag = !string.IsNullOrEmpty(proxy);
if (flag)
{
proxys.Kind = ProxyKind.Manual;
proxys.IsAutoDetect = false;
proxys.SslProxy = proxy;
chromeOptions.Proxy = proxys;
}
driver = new ChromeDriver(chromeDriverService, chromeOptions, TimeSpan.FromMinutes(10));
await Task.Delay(2000);
}
Run Code Online (Sandbox Code Playgroud)
我尝试过 http 或 ssl 同样...
StartDriver("88.55.66.77:8080");
Run Code Online (Sandbox Code Playgroud)
或者
StartDriver("http://username:pass@88.55.66.77:8080");
Run Code Online (Sandbox Code Playgroud)
我无法使用某种代理启动浏览器。
我想要一个可以自动输入用户名和密码的代码。我不需要 autoitx3.dll。
有没有办法启动安全代理?
谢谢。