Ubuntu18.04系统中如何host命令测试域名解析是否正常
如何用host命令测试域名解析是否正常呢?本文给出详细说明。
1.host命令可以用来测试域名解析是否正常
host url地址
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/10005016265b3.jpg)
Ubuntu18.04系统中如何用tty命令输出当前终端设备文件名
如何用tty命令输出当前终端设备文件名?本文给出详细说明。
1.tty命令可以输出当前终端设备文件名
tty
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/094346e2f434c.jpg)
Ubuntu18.04系统中如何用lvscan命令扫描系统中所有逻辑卷
如何用lvscan命令扫描系统中所有逻辑卷呢?本文给出详细说明。
1.lvscan命令可以扫描系统中所有逻辑卷
lvscan
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/094011aefa9be.jpg)
Ubuntu18.04系统中如何用zcat命令显示压缩包中文件内容
如何用zcat命令显示压缩包中文件内容?本文给出详细说明。
1.zcat命令可以显示压缩包中文件内容
zcat 压缩包文件名
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/0921257445da5.jpg)
centos系统修改文件内容
1.进入文件:vim 文件名
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/09182957e4293.jpg)
2.查找待修改内容位置 :
(1)shift+“:”,使文件变成可查询状态
(2)输入 / +查询内容 (eg 查询Directory参数,即 /Directory)
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/0918292a5eeb0.jpg)
eg 找到Directory参数,注释掉Require all denied添加Require all granted
3.找到位置后修改:按键盘`i`键 即变成可编辑状态
4.修改文件内容后退出:按`ESC`键
5.保存修改:
(1)shift+“:”,使文件变成可查询状态
(2)输入 `wq!`
如果不保存修改,可:
(1)shift+“:”,使文件变成可查询状态
(2)输入 `q!`
Ubuntu18.04系统中如何安装安装bacula
如何安装bacula呢?本文给出详细说明。
1.更新apt资源
sudo apt-get update
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/0915221093f4a.jpg)
2.安装zsh,等待安装完成
apt-get install bacula-server bacula-client
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-15/09152285865b6.jpg)
常见产品问题
## 代理IP的来源稳定吗?
青果网络自研代理IP服务,采用分布式架构,代理IP节点遍布全国各地,IP覆盖范围广,IP质量稳定。
## 你们都有哪些地区的代理?
我们实时可用的开放代理覆盖中国国内大部分城市,200多个不同省市地区。
## 可以指定城市地区和ISP运营商线路吗?
-可以根据邮编来获取指定某个城市的IP地址,详细获取指定地区的格式可以查看文档:[区域编码>>](https://www.qg.net/doc/1799.html)
-目前支持的地区及运营商可通过提供的API接口进行实时查询,接口请求地址: https://proxy.qg.net/resources
-或通过调试工具进行查询,调试工具地址 https://www.qg.net/tools/IPdebug.html
-参数注释:
- AreaId:城市的ID(数值与各地邮政编码一致),获取指定地区IP需要提交该参数;
- AreaName:城市名称,主要在查询的时候展示用,获取指定地区IP不需要提交该参数;
- Isp:运营商线路编号,1=电信,2=移动,3=联通,获取指定运营商IP需要注明参数值;
- IspName:运营商的线路名称,查询时展示用,获取指定运营商IP时不需要提交该参数;
- Status:状态值,1=可用,0=不可用。
详情可见API帮助文档 https://www.qg.net/list/160.html
### 代理IP可以做什么?
代理IP的作用很简单,隐藏真实IP,转发请求。代理IP的应用领域很广泛,可以在很多业务场景中得到应用。
动态共享代理、隧道代理IP时效性不长,短时间内可获取大量IP。可适用于隐藏网页IP,一般常用于数据爬取、投票、网购、空间留言、论坛顶帖、帐号注册、刷网站流量、网赚任务等,最适合需要频繁更换IP的客户;
静态独享代理、动态独享代理IP时效性长,IP稳定,可适用于重度网页访问/爬虫、观看视频或玩游戏等;
### HTTP、HTTPS、Socks5协议的区别?
Http代理和https代理的区别具体如下:
- 无论是http代理还是https代理,都支持同时代理访问http和https网站;
- http代理和https代理里的http和https和你访问的网站是否是http(https)是无关的;
- http代理:客户端和代理服务器之间是tcp传输数据;
- https代理:客户端和代理服务器之间是tls加密传输数据;
- http代理是使用最广泛的代理,大部分客户端都不支持https代理。
## 动态共享代理、动态独享代理、隧道共享代理、静态独享代理有什么区别?我该如何选择?
![image-20221119144313368](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-19/144314d861dfd.png)
## 什么是IP白名单?为什么要设置IP白名单?
为了保证您购买的代理IP业务只有您的服务器才能使用,我们采用了IP白名单机制;
也就是通过设置IP白名单指定您的服务器IP,除了您指定的IP外,其他IP不能使用该代理IP业务。
每个代理IP业务总共可添加的IP白名单数量是256个,购买后您有多台独立外网IP的机器可以同时使用代理IP业务。
如何查看机器的外网IP?
- 如果是办公室电脑,可以访问https://ip.cn/api/index?ip=&type=0 查询您的外网IP ;
- 如果是Linux服务器,可以通过如下命令查看机器外网IP:`curl myipip.net` ;
## 为什么隧道代理不需要获取IP?
因为隧道代理是云端自动更换IP,所以不需要用户手动更换IP,也就不需要获取IP。隧道代理会将用户发送的请求转发到不同的代理IP,转发周期可按需指定。
## 通道数、请求数、终端数分别是什么意思?
- 通道数: 通道数表示同时可使用IP数,如一通道表示同一时间内最多可提取使用1个IP;
- 请求数: 请求数表示同时可使用的IP请求数;
- 终端数:表示多少台终端设备。
## 高匿名、匿名和透明代理有什么区别?
### 1 透明代理
使用透明爬虫代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。
透明爬虫代理访问对方服务器所带的HTTP头信息如下:
```
REMOTE_ADDR = 代理服务器IP
HTTP_VIA = 代理服务器IP
HTTP_X_FORWARDED_FOR = 你的真实IP
```
### 2 匿名爬虫代理
匿名爬虫代理隐藏了你的真实IP,但是向访问对象透露了你是使用代理服务器访问他们的。
### 3 混肴代理
```
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
```
如上,与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真。
### 4 高匿名代理
使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。
高匿名爬虫代理访问对方服务器所带的HTTP头信息如下:
```
REMOTE_ADDR = 代理服务器IP
HTTP_VIA 不显示
HTTP_X_FORWARDED_FOR 不显示高匿名爬虫代理隐藏了你的真实IP,同时访问对象也不知道你使用了代理,因此隐蔽度最高。
```
Java语言代码示例
## Java HttpURLConnection
```java
package com.qgproxy;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
class QGProxyAuthenticator extends Authenticator {
private String user, password;
public QGProxyAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password.toCharArray());
}
}
class QGProxy {
public static void main(String args[]) {
// 如果您的本地jdk版本在Java 8 Update 111以上,需要增加以下代码
// System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "false");
// System.setProperty("jdk.http.auth.proxying.disabledSchemes", "false");
String targetUrl = "https://myip.top";
String proxyIp = "您的代理IP";
int proxyPort = 端口号;
String authKey = "请改成您的Key";
String password = "请改成您的AuthPwd";
try {
URL url = new URL(targetUrl);
Authenticator.setDefault(new QGProxyAuthenticator(authKey, password));
InetSocketAddress socketAddress = new InetSocketAddress(proxyIp, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.HTTP, socketAddress);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
byte[] response = readStream(connection.getInputStream());
System.out.println(new String(response));
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
}
}
public static byte[] readStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
return outSteam.toByteArray();
}
}
```
## Java okhttp
```java
package com.qgproxy;
import okhttp3.*;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.concurrent.TimeUnit;
public class QGProxy {
final static String proxyIp = "您的代理IP";
final static Integer proxyPort = 端口号;
final static String authKey = "请改成您的Key";
final static String password = "请改成您的AuthPwd";
public Response request() throws IOException {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort));
OkHttpClient client = new OkHttpClient.Builder()
.proxy(proxy)
.proxyAuthenticator((route, response) -> {
String credential = Credentials.basic(authKey, password);
return response.request().newBuilder().header("Proxy-Authorization", credential).build();
}).
build();
Request request = new Request.Builder().url("https://myip.top").get().build();
return client.newCall(request).execute();
}
public static void main(String[] args) {
QGProxy qgProxy = new QGProxy();
try {
Response resp = qgProxy.request();
System.out.println(resp.body().string());
} catch (Exception e) {
System.out.printf("failed to proxy: %s\n", e.getMessage());
}
}
}
```
## Java jsoup
```java
package com.qgproxy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
public class QGProxy {
final static String proxyIp = "您的代理IP";
final static Integer proxyPort = 端口号;
final static String authKey = "请改成您的Key";
final static String password = "请改成您的AuthPwd";
public static void main(String[] args) throws Exception {
String targetUrl = "https://myip.top";
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(authKey, password.toCharArray());
}
});
// 如果您的本地jdk版本在Java 8 Update 111以上,需要增加以下代码
// System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "false");
// System.setProperty("jdk.http.auth.proxying.disabledSchemes", "false");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort));
try {
Document doc = Jsoup.connect(targetUrl).ignoreContentType(true).timeout(10000).proxy(proxy).get();
if (doc != null) {
System.out.println(doc.body().html());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
## Java HttpClient 3.X
```java
package com.qgproxy;
import java.io.IOException;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class QGProxy {
public static void main(String[] args) {
String targetUrl = "https://myip.top"; // 访问的目标站点
String proxyIp = "您的代理IP";
int proxyPort = 端口号;
String authKey = "请改成您的Key";
String password = "请改成您的AuthPwd";
try {
HttpHost proxy = new HttpHost(proxyIp, proxyPort, "http");
HttpHost target = new HttpHost(targetUrl, 80);
// 设置认证
CredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(authKey, password));
CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(provider).build();
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
HttpGet httpGet = new HttpGet("/ip");
httpGet.setConfig(config);
CloseableHttpResponse resp = null;
resp = httpClient.execute(target, httpGet);
if (resp.getStatusLine().getStatusCode() == 200) {
System.out.println("OK");
}
System.out.println(resp.getStatusLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
## Java HttpClient 4.X
```java
package com.qgproxy
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.AuthSchemes;
import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.ProxyAuthenticationStrategy;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.NameValuePair;
import org.apache.http.util.EntityUtils;
public class QGProxy {
final static String proxyHost = "您的代理IP";
final static Integer proxyPort = 端口号;
final static String proxyUser = "请改成您的key";
final static String proxyPass = "请改成您的password";
private static PoolingHttpClientConnectionManager cm = null;
private static HttpRequestRetryHandler httpRequestRetryHandler = null;
private static HttpHost proxy = null;
private static CredentialsProvider credsProvider = null;
private static RequestConfig reqConfig = null;
static {
ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory();
LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory.getSocketFactory();
Registry registry = RegistryBuilder.create()
.register("http", plainsf)
.register("https", sslsf)
.build();
cm = new PoolingHttpClientConnectionManager(registry);
cm.setMaxTotal(10);
cm.setDefaultMaxPerRoute(5);
proxy = new HttpHost(proxyHost, proxyPort, "http");
credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(proxyUser, proxyPass));
reqConfig = RequestConfig.custom()
.setExpectContinueEnabled(false)
.setProxy(new HttpHost(proxyHost, proxyPort))
.build();
}
public static void doRequest(HttpRequestBase httpReq) {
CloseableHttpResponse httpResp = null;
try {
httpReq.setConfig(reqConfig);
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.setDefaultCredentialsProvider(credsProvider)
.build();
AuthCache authCache = new BasicAuthCache();
authCache.put(proxy, new BasicScheme());
authCache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpClientContext localContext = HttpClientContext.create();
localContext.setAuthCache(authCache);
httpResp = httpClient.execute(httpReq, localContext);
System.out.println(httpResp.getStatusLine().getStatusCode(););
BufferedReader rd = new BufferedReader(new InputStreamReader(httpResp.getEntity().getContent()));
String line = "";
while((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (httpResp != null) {
httpResp.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String targetUrl = "https://myip.top";
try {
HttpGet httpGet = new HttpGet(targetUrl);
doRequest(httpGet);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
Debian系统如何安装跟使用tcping命令
1.输入`yum update -y`更新系统软件源。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/1523264b90c23.jpg)
2.然后输入`yum install -y tcptraceroute bc`安装依赖。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/152326b5dedee.jpg)
3.以上2个步骤都安装完成后开始安装tcping,首先输入`cd /usr/bin`切换目录到/usr/bin,然后输入:
wget -O tcping https://soft.mengclaw.com/Bash/TCP-PING
下载TCP-PING可执行文件,并重命名为tcping。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/15232656e2d80.jpg)
4.输入`chmod +x tcping`赋予tcping执行权限。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/1523261f2059c.jpg)
5.tcping使用效果测试,输入tcping 域名或者ip 端口 ,本文以域名baidu.com为测试,端口为80。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/1523260128fee.jpg)
解决Centos系统使用yum update命令报错的问题
1.输入`apt-get update -y`更新系统软件源。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/1519589b62f58.jpg)
2.然后输入`apt-get install -y tcptraceroute bc`安装依赖。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/151958a633bfe.jpg)
3.以上2个步骤都安装完成后开始安装tcping,首先输入`cd /usr/bin`切换目录到/usr/bin,然后输入:
wget -O tcping https://soft.mengclaw.com/Bash/TCP-PING
下载TCP-PING可执行文件,并重命名为tcping。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/151958e35d7d5.jpg)
4.输入`chmod +x tcping`赋予tcping执行权限。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/151958e218227.jpg)
5.使用tcping进行测试,输入tcping 域名或者ip 端口 ,本文以域名baidu.com为测试,端口为80。
![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2024-03-07/15195820dae58.jpg)