| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /**
- * https://proxy.seofangfa.com/
- * 【亲测好用!】2022-04-18 21:13:41最新免费代理IP 1395个
- * 免费代理IP项目初衷
- * 做SEO项目的时候需要定时给客户网站批量查收录、排名等数据,如果是少量还没问题,大量的话,很容易被百度封IP、出验证码,造成程序效率低下,于是走上了寻找代理IP这条路。 一开始也用过市面上的付费代理IP,名字就不提了,百度能搜索到的基本上都用过,但是他们IP要么存活率低,要么价格不便宜,于是萌生了自己寻找代理IP的念头。
- * <p>
- * 项目简介
- * 2022年最新可用的免费代理IP,每5分钟重新验证一次,包括HTTP代理IP,HTTPS代理IP,SOCKS理IP,QQ代理IP等,本网站所提供的代理IP,均经过了程序严格的两步验证,保证了连接速度和存活率,可用度比较高,目前在实际项目中,轮循处理500万条URL的百度收录查询毫无压力。
- * <p>
- * 验证方法
- * 第一步,先经过代理IP访问http://www.baidu.com,如果连接时间在3秒以内,并且获取百度源代码正常,则认为这是一个有效的代理IP;
- * 第二步,再用第一步验证有效的IP去访问淘宝IP位置的API接口,获取该IP的地理位置,如果连接时间在3秒以内,且能正常获取到该IP的地理位置,则认为该代理IP是有效的,最终入库。
- * <p>
- * 代理IP有什么用
- * 简单举几个例子
- * 1、隐私保护。使用代理IP就是让你上QQ和网页浏览时不用当心自己的真实IP会被别人知道或被黑客攻击;
- * 2、反防采集。比如我们做SEO顾问服务时经常需要给客户批量查关键词排名、文章收录情况等,如果不通过代理IP,搜索引擎很容易屏蔽我们的爬虫程序;
- * 3、刷票。很多投票的网页一个IP只允许投票一次,如果我们借助大量代理IP去投票,结果可想而知....
- */
- import com.alibaba.fastjson.JSONObject;
- import org.jsoup.Connection;
- import top.lvzhiqiang.util.CheckSign4Bitget;
- import top.lvzhiqiang.util.JsoupUtil;
- import java.io.UnsupportedEncodingException;
- import java.net.InetSocketAddress;
- import java.net.Proxy;
- import java.security.InvalidKeyException;
- import java.time.Duration;
- import java.time.LocalDateTime;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * 爬取网上免费代理IP,搭建自己的Ip池
- */
- public class Test4 {
- public static void main(String[] args) {
- LocalDateTime cTime = LocalDateTime.now().minusSeconds(3);
- LocalDateTime endTime = LocalDateTime.now();
- System.out.println(Duration.between(cTime, endTime).getSeconds());
- Map<String, String> paramMap = new LinkedHashMap<>();
- /*paramMap.put("traderId","b1b5467f8bb73f53ac97");
- paramMap.put("pageNo","1");
- paramMap.put("pageSize","10");*/
- /*paramMap.put("productType", "umcbl");
- paramMap.put("startTime", String.valueOf(DateUtils.localDateTimeToMilliseconds(endTime.minusDays(1))));
- paramMap.put("endTime", String.valueOf(DateUtils.localDateTimeToMilliseconds(endTime)));
- paramMap.put("pageSize", "100");
- paramMap.put("clientOid", "1089293404165083137");*/
- paramMap.put("symbol", "LEVERUSDT_UMCBL");
- paramMap.put("orderId", "1089364238096883714");
- String signQueryString = paramMap.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).collect(Collectors.joining("&"));
- String url = "/api/mix/v1/trace/report/order/currentList";
- url = "/api/mix/v1/order/detail";
- String s = JSONObject.toJSONString(paramMap);
- //JSONObject response = requestApi4Common(url, null, s, JsoupUtil.HTTP_POST, paramMap);
- JSONObject response = requestApi4Common(url, signQueryString, null, JsoupUtil.HTTP_GET, paramMap);
- System.out.println(response);
- }
- private static JSONObject requestApi4Common(String requestPath, String signQueryString, String signBody, String httpMethod, Map<String, String> paramMap) {
- String timestamp = String.valueOf(System.currentTimeMillis());
- Map<String, String> basicHeaderMap = new HashMap<>();
- basicHeaderMap.put("ACCESS-KEY", "bg_433d37306df0e8901c6d107c6d9e9111");
- // 使用base64编码签名(请参阅签名消息)。
- basicHeaderMap.put("ACCESS-SIGN", "");
- // 您请求的时间戳。
- basicHeaderMap.put("ACCESS-TIMESTAMP", "");
- // 您在创建API KEY时设置的口令。
- basicHeaderMap.put("ACCESS-PASSPHRASE", "7f934f62f2701bee932204580d115228");
- // 统一设置为application/json。
- basicHeaderMap.put("Content-Type", "application/json");
- // 支持多语言, 如:中文(zh-CN),英语(en-US)
- basicHeaderMap.put("locale", "zh-CN");
- Map<String, String> headerMap = new HashMap<>();
- headerMap.putAll(basicHeaderMap);
- try {
- String accessSign = CheckSign4Bitget.generate(timestamp, httpMethod, requestPath, signQueryString, signBody, "1fdd0fc2976bea80189ba13710e12825ca3ef6c5e25a0d76fd03f8f6cd4a61d9");
- headerMap.put("ACCESS-TIMESTAMP", timestamp);
- headerMap.put("ACCESS-SIGN", accessSign);
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- } catch (InvalidKeyException e) {
- throw new RuntimeException(e);
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- try {
- Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 1080));
- String mainUrl = "https://api.bitget.com";
- String requestUrl = mainUrl + requestPath;
- Connection.Response response;
- if (httpMethod.equals("POST")) {
- response = JsoupUtil.requestBodyJSON(requestUrl, httpMethod, proxy, null, headerMap, paramMap);
- } else {
- response = JsoupUtil.requestBody(requestUrl, httpMethod, proxy, null, headerMap, paramMap);
- }
- return JSONObject.parseObject(response.body());
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
|