proxy - Phantomjs 如果代理没有响应

标签 proxy phantomjs

脚本test.js:

var page = require('webpage').create();
var url = args[1];
page.open(url, function (status) {
    console.log(status); 
    phantom.exit();
});

运行脚本:

phantomjs --proxy=1.1.1.1:22 test.js 'http://nonexistent_site.com'

1.1.1.1:22 - 不存在的服务器

http://nonexistent_site.com - 不存在的网站

如何在 PhantomJS 中确定哪一个没有响应 - 代理还是站点?

最佳答案

您可以使用page.onResourceTimeout捕获网络超时回调:

page.onResourceTimeout = function(request) {
    console.log('Response (#' + request.id + '): ' + JSON.stringify(request));
};

您还可以设置自己的超时:

page.settings.resourceTimeout = 3000; // ms

要拦截网络错误,您可以注册 page.onResourceError回调:

page.onResourceError = function(resourceError) {
  console.log('Unable to load resource #' + resourceError.id + ' URL:' + resourceError.url);
  console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};

完成此操作后,不存在的主机将触发找不到主机错误。

但是如果您使用不工作的代理,即使目标主机不存在,您始终会首先遇到资源上的网络超时错误。

因此,如果您想检查代理:),我建议仅 page.open 100% 正常工作的主机,例如,在您正在操作的服务器上设置一个简单的静态网页。

还有一个node.js模块:proxy-checker

关于proxy - Phantomjs 如果代理没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356679/

相关文章:

node.js - 无法使用 phantomJS 获取 iframe 的元素

javascript - 将 Uint8ClampedArray 缓冲区输出为字节流

python - 尝试使用 selenium Python 循环搜索查询时在 find_element_by_partial_link_text() 中出错

caching - NGINX try_files 具有多个命名位置

linux - haproxy acl中的base/uri/path/etc有什么区别?

http - 如何修复 ERR_INVALID_CHUNKED_ENCODING 错误?

c - 编写C代理时出现的问题

docker - 我没有让 Keycloak 在 Traefik 后面的 docker 中工作

qt - 新日期 ("YYYY-MM-DD") 在删除 MacPorts 后停止在 Qt WebKit 中工作

macos - 为什么即使它在我的 PATH 上,Groovy 也找不到该程序?