dingdong-helper icon indicating copy to clipboard operation
dingdong-helper copied to clipboard

像看看某件商品(比如:猪肉)是否有货,为何返回405

Open miaomiao1992 opened this issue 4 years ago • 11 comments

image

但是返回结果是这个: {"error":"AssertError","code":"405","data":"-405"}

郁闷啊

配置文件是PHP解析Charles结果自动生成配置信息: 1、PHP

(); Properties properties = new Properties(); File file = new File(fileName); try { InputStream is = new FileInputStream(file); properties.load(is); for (Object key : properties.keySet()) { map.put(key, properties.getProperty((String) key)); } return map; } catch (Exception ex) { System.out.println("Properties配置读取失败!"+fileName); return new HashMap(); }

miaomiao1992 avatar Apr 16 '22 12:04 miaomiao1992

PHP代码

$string = file_get_contents("raw.txt"); preg_match_all("/([a-zA-Z_0-9])=([^&])/", preg_replace("/\r\ncookie[\s\S]*/", "", $string), $result); $str = '';

for ($i = 0; $i < count($result[1]); $i++) $str .= $result[1][$i] . "=" . $result[2][$i] . PHP_EOL;

$fp = fopen("request.properties", "w"); fwrite($fp, $str);

$header = "cookie" . preg_replace("/[\s\S]cookie/", "", $string); preg_match_all("/([a-zA-Z-]):\s([^\r\n]*)/", $header, $headers); $headerString = '';

for ($i = 0; $i < count($headers[1]); $i++) $headerString .= $headers[1][$i] . "=" . $headers[2][$i] . PHP_EOL;

$fp = fopen("headers.properties", "w"); fwrite($fp, $headerString);

echo "解析成功".PHP_EOL;

miaomiao1992 avatar Apr 16 '22 12:04 miaomiao1992

UserConfig稍微改了一下

public static Map headers;

public  static Map request;

static {
    String path = System.getProperty("user.dir") + File.separator + "config/request.properties";
    request = Property.getMap(path);
    path = System.getProperty("user.dir") + File.separator + "config/headers.properties";
    headers = Property.getMap(path);
}

miaomiao1992 avatar Apr 16 '22 12:04 miaomiao1992

想抓取stock_number这个参数,不知为何老是失败,求高手赐教

{ "code": 0, "msg": "ok", "success": true, "data": { "cate": [{ "id": "stock_no", "name": "缺货商品", "products": [{ "price": "16.4", "name": "黑钻世家冷鲜黑猪后腿精肉片 约150g", "spec": "生态慢养,院士育种,有嘉兴黑猪血统,猪食五谷和紫花苜蓿草;弹嫩不柴,适合家常小炒", "sizes": [], "status": 1, "type": 0, "activity": [], "oid": 49873, "id": "61503f30530ee2c2910da379", "origin_price": "16.4", "vip_price": "15.58", "stock_number": 0, "marketing_tags": [], "is_promotion": 0, "buy_limit": 0,

miaomiao1992 avatar Apr 16 '22 12:04 miaomiao1992

app_client_id 由4 改为3可以解决405

LeiWangJava avatar Apr 16 '22 12:04 LeiWangJava

app_client_id 由4 改为3可以解决405

22222

试了以下,还用了作者的MD5签名算法,好像还是不行

miaomiao1992 avatar Apr 16 '22 12:04 miaomiao1992

ddmc-app-client-id 这个也改3

LeiWangJava avatar Apr 16 '22 12:04 LeiWangJava

ddmc-app-client-id 这个也改3

app-client-id改成3也不行

miaomiao1992 avatar Apr 16 '22 13:04 miaomiao1992

https://maicai.api.ddxq.mobi/homeApi/categoriesNewDetail 你跑一下这个接口,看一下app_client_id 改为3 能不能显示出商品库存等信息,,我账号是4的话{ "error": "AssertError", "code": "405", "data": "-405" } 如果3 的话就 "data": { "products": [ { "price": "88", "name": "【抗疫保供盲盒】蔬菜组合A (10种)", "spec": "内含土豆|胡萝卜|洋葱|娃娃菜|青甘蓝|姜蒜等10种蔬菜,如有缺货替换等价商品,具体以实际收货为准", "sizes": [], 这样正常的

LeiWangJava avatar Apr 16 '22 13:04 LeiWangJava

categoriesNewDetail

像这样还是不行,晕啊

    HttpRequest httpRequest = HttpUtil.createGet("https://maicai.api.ddxq.mobi/homeApi/categoriesNewDetail");
    Map<String,String> headers=UserConfig.headers;      
    httpRequest.addHeaders(headers);
    Map<String, String> request = UserConfig.request;
    request.put("app_client_id","3");
    httpRequest.formStr(Api.sign(request));
    String body = httpRequest.execute().body();
    System.out.println(body);

miaomiao1992 avatar Apr 17 '22 00:04 miaomiao1992

app-client-id和ddmc-app-client-id都改为3对我有用,而且我抓包的时候这两个参数本来就是3

yhe02 avatar Apr 17 '22 10:04 yhe02

categoriesNewDetail

像这样还是不行,晕啊

    HttpRequest httpRequest = HttpUtil.createGet("https://maicai.api.ddxq.mobi/homeApi/categoriesNewDetail");
    Map<String,String> headers=UserConfig.headers;      
    httpRequest.addHeaders(headers);
    Map<String, String> request = UserConfig.request;
    request.put("app_client_id","3");
    httpRequest.formStr(Api.sign(request));
    String body = httpRequest.execute().body();
    System.out.println(body);

你好,我也遇到同样的问题,请问你解决了吗

jeyzhu avatar Apr 17 '22 14:04 jeyzhu