| | |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | |
| | | import org.apache.commons.httpclient.Header; |
| | | import org.apache.commons.httpclient.HttpClient; |
| | | import org.apache.commons.httpclient.HttpException; |
| | | import org.apache.commons.httpclient.methods.GetMethod; |
| | | import org.apache.commons.httpclient.methods.PostMethod; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | |
| | | return BigDecimalUtil.getWithNoZera(money).setScale(2); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 计算商品券后价,没有券则返回原价 |
| | | * |
| | | * @param goodsBrief |
| | | * @return |
| | | */ |
| | | public static BigDecimal getQuanPrice(PDDGoodsDetail goods) { |
| | | public static BigDecimal getCouponPrice(PDDGoodsDetail goods) { |
| | | BigDecimal hundred = new BigDecimal(100); |
| | | BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred); |
| | | Boolean hasCoupon = goods.getHasCoupon(); |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 是否为拼多多的链接 |
| | | * |
| | | * @param link |
| | | * @return |
| | | */ |
| | | public static boolean isPDDLink(String link) { |
| | | return link.contains("://p.pinduoduo.com/") || link.contains("yangkeduo.com/"); |
| | | } |
| | | |
| | | public static boolean isPDDShortLink(String link) { |
| | | return link.contains("://p.pinduoduo.com/"); |
| | | } |
| | | |
| | | public static String getPDDGoodsId(String url) { |
| | | if (url == null) |
| | | return null; |
| | | String link = url; |
| | | if (link.contains("://p.pinduoduo.com/")) {// 拼多多的短链 |
| | | |
| | | if (isPDDShortLink(link)) {// 拼多多的短链 |
| | | HttpClient client = new HttpClient(); |
| | | client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); |
| | | PostMethod pm = new PostMethod(link); |
| | |
| | | } |
| | | |
| | | public static String getCustomParams(Long uid) { |
| | | return uid + "_" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"); |
| | | return uid + "" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"); |
| | | } |
| | | |
| | | public static String getUidFromCustomParams(String params) { |
| | | return params.split("_")[0]; |
| | | if (params.contains("_")) { |
| | | return params.split("_")[0]; |
| | | } else { |
| | | if (params.length() > 12) { |
| | | return params.substring(0, params.length() - 8); |
| | | } else { |
| | | return params; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String link = "https://mobile.yangkeduo.com/goods.html?ps=Xy6iPwbIKZ"; |
| | | HttpClient client = new HttpClient(); |
| | | client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); |
| | | GetMethod pm = new GetMethod(link); |
| | | pm.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"); |
| | | //pm.setRequestHeader("Sec-Fetch-Site","same-origin"); |
| | | pm.setRequestHeader("Upgrade-Insecure-Requests","1"); |
| | | pm.setRequestHeader("Referer","https://mobile.yangkeduo.com/goods.html?ps=Xy6iPwbIKZ"); |
| | | //pm.setRequestHeader("Priority","u=0, i"); |
| | | pm.setRequestHeader(":authority","mobile.yangkeduo.com"); |
| | | //pm.setRequestHeader("Cookie","api_uid=CkilZ2ZPIkIbkQBWBOpQAg==; _nano_fp=Xpman5TjX5gYX5XyX9_~Ae2Gbs0pL8h6jt_96NPO; webp=1; jrpl=KlZOYnFydoAazGlzTaZsZppQwiLSz3OM; njrpl=KlZOYnFydoAazGlzTaZsZppQwiLSz3OM; dilx=C2L6L~2oOr3ElrZKZ4_YW; pdd_vds=gaeAuFISuzLSnVdWuVbgspGgwjOXGqdpNMuzbXyFeJOXypsMOMlkLJnMGpOH"); |
| | | pm.setRequestHeader("Sec-Ch-Ua","\"Chromium\";v=\"124\", \"Google Chrome\";v=\"124\", \"Not-A.Brand\";v=\"99\""); |
| | | pm.setRequestHeader("Sec-Ch-Ua-Mobile","?0"); |
| | | pm.setRequestHeader("Sec-Ch-Ua-Platform","\"Windows\""); |
| | | pm.setRequestHeader("Sec-Fetch-Dest","document"); |
| | | pm.setRequestHeader("Sec-Fetch-Mode","navigate"); |
| | | // pm.setRequestHeader("",""); |
| | | // pm.setRequestHeader("",""); |
| | | |
| | | try { |
| | | client.executeMethod(pm); |
| | | Header[] headers = pm.getRequestHeaders(); |
| | | for(Header header:headers ){ |
| | | |
| | | System.out.println(header.toString()); |
| | | } |
| | | Header location = pm.getResponseHeader("Location"); |
| | | if (location != null) { |
| | | link = location.getValue(); |
| | | System.out.println(link); |
| | | } |
| | | System.out.println(pm.getResponseBodyAsString()); |
| | | } catch (HttpException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |