curl 工作但邮递员、python 请求、wget 不工作

问题描述 投票:0回答:1

当我直接在终端中点击 cURL 时,此卷曲给出了异常响应。但是当我使用 postman、Python requests 或任何其他方式(如 wget、powershell 等)时,确实会出现 403 html 页面。

curl 'https://www.doordash.com/graphql/searchWithFilterFacetFeed?operation=searchWithFilterFacetFeed' \
  -H 'authority: www.doordash.com' \
  -H 'accept: */*' \
  -H 'accept-language: en-US' \
  -H 'content-type: application/json' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36' \
  --data-raw $'{"operationName":"searchWithFilterFacetFeed","variables":{"cursor":"eyJvZmZzZXQiOjUwLCJ2ZXJ0aWNhbF9pZHMiOltdLCJjcm9zc192ZXJ0aWNhbF9wYWdlX3R5cGUiOiJHTE9CQUxfU0VBUkNIX1BBR0UiLCJwYWdlX3N0YWNrX3RyYWNlIjpbXSwibGF5b3V0X292ZXJyaWRlIjoiVU5TUEVDSUZJRUQiLCJpc19wYWdpbmF0aW9uX2ZhbGxiYWNrIjpudWxsLCJzb3VyY2VfcGFnZV90eXBlIjpudWxsLCJ2ZXJ0aWNhbF9uYW1lcyI6e319","filterQuery":"","query":"street food","isDebug":false},"query":"query searchWithFilterFacetFeed($cursor: String, $filterQuery: String, $query: String\u0021, $isDebug: Boolean, $fromFilterChange: Boolean, $serializedBundleGlobalSearchContext: String, $address: String) {\\n  searchWithFilterFacetFeed(\\n    cursor: $cursor\\n    filterQuery: $filterQuery\\n    query: $query\\n    isDebug: $isDebug\\n    fromFilterChange: $fromFilterChange\\n    serializedBundleGlobalSearchContext: $serializedBundleGlobalSearchContext\\n    address: $address\\n  ) {\\n    ...FacetFeedV2ResultFragment\\n    __typename\\n  }\\n}\\n\\nfragment FacetFeedV2ResultFragment on FacetFeedV2Result {\\n  body {\\n    id\\n    header {\\n      ...FacetV2Fragment\\n      __typename\\n    }\\n    body {\\n      ...FacetV2Fragment\\n      __typename\\n    }\\n    layout {\\n      omitFooter\\n      __typename\\n    }\\n    __typename\\n  }\\n  page {\\n    ...FacetV2PageFragment\\n    __typename\\n  }\\n  header {\\n    ...FacetV2Fragment\\n    __typename\\n  }\\n  custom\\n  logging\\n  __typename\\n}\\n\\nfragment FacetV2Fragment on FacetV2 {\\n  ...FacetV2BaseFragment\\n  childrenMap {\\n    ...FacetV2BaseFragment\\n    __typename\\n  }\\n  __typename\\n}\\n\\nfragment FacetV2BaseFragment on FacetV2 {\\n  id\\n  childrenCount\\n  component {\\n    ...FacetV2ComponentFragment\\n    __typename\\n  }\\n  name\\n  text {\\n    ...FacetV2TextFragment\\n    __typename\\n  }\\n  images {\\n    main {\\n      ...FacetV2ImageFragment\\n      __typename\\n    }\\n    icon {\\n      ...FacetV2ImageFragment\\n      __typename\\n    }\\n    background {\\n      ...FacetV2ImageFragment\\n      __typename\\n    }\\n    accessory {\\n      ...FacetV2ImageFragment\\n      __typename\\n    }\\n    custom {\\n      key\\n      value {\\n        ...FacetV2ImageFragment\\n        __typename\\n      }\\n      __typename\\n    }\\n    __typename\\n  }\\n  events {\\n    click {\\n      name\\n      data\\n      __typename\\n    }\\n    __typename\\n  }\\n  style {\\n    spacing\\n    background_color\\n    border {\\n      color\\n      width\\n      style\\n      __typename\\n    }\\n    sizeClass\\n    __typename\\n  }\\n  layout {\\n    omitFooter\\n    gridSpecs {\\n      Mobile {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      Phablet {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      Tablet {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      Desktop {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      WideScreen {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      UltraWideScreen {\\n        ...FacetV2LayoutGridFragment\\n        __typename\\n      }\\n      __typename\\n    }\\n    dlsPadding {\\n      top\\n      right\\n      bottom\\n      left\\n      __typename\\n    }\\n    __typename\\n  }\\n  custom\\n  logging\\n  __typename\\n}\\n\\nfragment FacetV2ComponentFragment on FacetV2Component {\\n  id\\n  category\\n  __typename\\n}\\n\\nfragment FacetV2TextFragment on FacetV2Text {\\n  title\\n  titleTextAttributes {\\n    textStyle\\n    textColor\\n    __typename\\n  }\\n  subtitle\\n  subtitleTextAttributes {\\n    textStyle\\n    textColor\\n    __typename\\n  }\\n  accessory\\n  accessoryTextAttributes {\\n    textStyle\\n    textColor\\n    __typename\\n  }\\n  description\\n  descriptionTextAttributes {\\n    textStyle\\n    textColor\\n    __typename\\n  }\\n  custom {\\n    key\\n    value\\n    __typename\\n  }\\n  __typename\\n}\\n\\nfragment FacetV2ImageFragment on FacetV2Image {\\n  uri\\n  placeholder\\n  local\\n  style\\n  logging\\n  events {\\n    click {\\n      name\\n      data\\n      __typename\\n    }\\n    __typename\\n  }\\n  __typename\\n}\\n\\nfragment FacetV2LayoutGridFragment on FacetV2LayoutGrid {\\n  interRowSpacing\\n  interColumnSpacing\\n  minDimensionCount\\n  __typename\\n}\\n\\nfragment FacetV2PageFragment on FacetV2Page {\\n  next {\\n    name\\n    data\\n    __typename\\n  }\\n  onLoad {\\n    name\\n    data\\n    __typename\\n  }\\n  __typename\\n}\\n"}' \
  --compressed

我不知道为什么会这样。

我已尝试调试该问题,但到目前为止尚未成功。

python http curl python-requests postman
1个回答
0
投票

我也可以通过Postman、Python和node.js来调用。

我使用这个很酷的网站:将curl命令转换为Python、JavaScript。

标题

user-agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
authority : www.doordash.com
accept-language : en-US

身体

{
    "operationName": "searchWithFilterFacetFeed",
    "variables": {
        "cursor": "eyJvZmZzZXQiOjUwLCJ2ZXJ0aWNhbF9pZHMiOltdLCJjcm9zc192ZXJ0aWNhbF9wYWdlX3R5cGUiOiJHTE9CQUxfU0VBUkNIX1BBR0UiLCJwYWdlX3N0YWNrX3RyYWNlIjpbXSwibGF5b3V0X292ZXJyaWRlIjoiVU5TUEVDSUZJRUQiLCJpc19wYWdpbmF0aW9uX2ZhbGxiYWNrIjpudWxsLCJzb3VyY2VfcGFnZV90eXBlIjpudWxsLCJ2ZXJ0aWNhbF9uYW1lcyI6e319",
        "filterQuery": "",
        "query": "street food",
        "isDebug": false
    },
    "query": "query searchWithFilterFacetFeed($cursor: String, $filterQuery: String, $query: String!, $isDebug: Boolean, $fromFilterChange: Boolean, $serializedBundleGlobalSearchContext: String, $address: String) {\n  searchWithFilterFacetFeed(\n    cursor: $cursor\n    filterQuery: $filterQuery\n    query: $query\n    isDebug: $isDebug\n    fromFilterChange: $fromFilterChange\n    serializedBundleGlobalSearchContext: $serializedBundleGlobalSearchContext\n    address: $address\n  ) {\n    ...FacetFeedV2ResultFragment\n    __typename\n  }\n}\n\nfragment FacetFeedV2ResultFragment on FacetFeedV2Result {\n  body {\n    id\n    header {\n      ...FacetV2Fragment\n      __typename\n    }\n    body {\n      ...FacetV2Fragment\n      __typename\n    }\n    layout {\n      omitFooter\n      __typename\n    }\n    __typename\n  }\n  page {\n    ...FacetV2PageFragment\n    __typename\n  }\n  header {\n    ...FacetV2Fragment\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2Fragment on FacetV2 {\n  ...FacetV2BaseFragment\n  childrenMap {\n    ...FacetV2BaseFragment\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2BaseFragment on FacetV2 {\n  id\n  childrenCount\n  component {\n    ...FacetV2ComponentFragment\n    __typename\n  }\n  name\n  text {\n    ...FacetV2TextFragment\n    __typename\n  }\n  images {\n    main {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    icon {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    background {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    accessory {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    custom {\n      key\n      value {\n        ...FacetV2ImageFragment\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  style {\n    spacing\n    background_color\n    border {\n      color\n      width\n      style\n      __typename\n    }\n    sizeClass\n    __typename\n  }\n  layout {\n    omitFooter\n    gridSpecs {\n      Mobile {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Phablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Tablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Desktop {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      WideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      UltraWideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      __typename\n    }\n    dlsPadding {\n      top\n      right\n      bottom\n      left\n      __typename\n    }\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2ComponentFragment on FacetV2Component {\n  id\n  category\n  __typename\n}\n\nfragment FacetV2TextFragment on FacetV2Text {\n  title\n  titleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  subtitle\n  subtitleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  accessory\n  accessoryTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  description\n  descriptionTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  custom {\n    key\n    value\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2ImageFragment on FacetV2Image {\n  uri\n  placeholder\n  local\n  style\n  logging\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2LayoutGridFragment on FacetV2LayoutGrid {\n  interRowSpacing\n  interColumnSpacing\n  minDimensionCount\n  __typename\n}\n\nfragment FacetV2PageFragment on FacetV2Page {\n  next {\n    name\n    data\n    __typename\n  }\n  onLoad {\n    name\n    data\n    __typename\n  }\n  __typename\n}\n"
}

Python

import requests

headers = {
    'authority': 'www.doordash.com',
    'accept': '*/*',
    'accept-language': 'en-US',
    'content-type': 'application/json',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
}

params = {
    'operation': 'searchWithFilterFacetFeed',
}

json_data = {
    'operationName': 'searchWithFilterFacetFeed',
    'variables': {
        'cursor': 'eyJvZmZzZXQiOjUwLCJ2ZXJ0aWNhbF9pZHMiOltdLCJjcm9zc192ZXJ0aWNhbF9wYWdlX3R5cGUiOiJHTE9CQUxfU0VBUkNIX1BBR0UiLCJwYWdlX3N0YWNrX3RyYWNlIjpbXSwibGF5b3V0X292ZXJyaWRlIjoiVU5TUEVDSUZJRUQiLCJpc19wYWdpbmF0aW9uX2ZhbGxiYWNrIjpudWxsLCJzb3VyY2VfcGFnZV90eXBlIjpudWxsLCJ2ZXJ0aWNhbF9uYW1lcyI6e319',
        'filterQuery': '',
        'query': 'street food',
        'isDebug': False,
    },
    'query': 'query searchWithFilterFacetFeed($cursor: String, $filterQuery: String, $query: String!, $isDebug: Boolean, $fromFilterChange: Boolean, $serializedBundleGlobalSearchContext: String, $address: String) {\n  searchWithFilterFacetFeed(\n    cursor: $cursor\n    filterQuery: $filterQuery\n    query: $query\n    isDebug: $isDebug\n    fromFilterChange: $fromFilterChange\n    serializedBundleGlobalSearchContext: $serializedBundleGlobalSearchContext\n    address: $address\n  ) {\n    ...FacetFeedV2ResultFragment\n    __typename\n  }\n}\n\nfragment FacetFeedV2ResultFragment on FacetFeedV2Result {\n  body {\n    id\n    header {\n      ...FacetV2Fragment\n      __typename\n    }\n    body {\n      ...FacetV2Fragment\n      __typename\n    }\n    layout {\n      omitFooter\n      __typename\n    }\n    __typename\n  }\n  page {\n    ...FacetV2PageFragment\n    __typename\n  }\n  header {\n    ...FacetV2Fragment\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2Fragment on FacetV2 {\n  ...FacetV2BaseFragment\n  childrenMap {\n    ...FacetV2BaseFragment\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2BaseFragment on FacetV2 {\n  id\n  childrenCount\n  component {\n    ...FacetV2ComponentFragment\n    __typename\n  }\n  name\n  text {\n    ...FacetV2TextFragment\n    __typename\n  }\n  images {\n    main {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    icon {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    background {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    accessory {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    custom {\n      key\n      value {\n        ...FacetV2ImageFragment\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  style {\n    spacing\n    background_color\n    border {\n      color\n      width\n      style\n      __typename\n    }\n    sizeClass\n    __typename\n  }\n  layout {\n    omitFooter\n    gridSpecs {\n      Mobile {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Phablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Tablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Desktop {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      WideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      UltraWideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      __typename\n    }\n    dlsPadding {\n      top\n      right\n      bottom\n      left\n      __typename\n    }\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2ComponentFragment on FacetV2Component {\n  id\n  category\n  __typename\n}\n\nfragment FacetV2TextFragment on FacetV2Text {\n  title\n  titleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  subtitle\n  subtitleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  accessory\n  accessoryTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  description\n  descriptionTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  custom {\n    key\n    value\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2ImageFragment on FacetV2Image {\n  uri\n  placeholder\n  local\n  style\n  logging\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2LayoutGridFragment on FacetV2LayoutGrid {\n  interRowSpacing\n  interColumnSpacing\n  minDimensionCount\n  __typename\n}\n\nfragment FacetV2PageFragment on FacetV2Page {\n  next {\n    name\n    data\n    __typename\n  }\n  onLoad {\n    name\n    data\n    __typename\n  }\n  __typename\n}\n',
}

response = requests.post(
    'https://www.doordash.com/graphql/searchWithFilterFacetFeed',
    params=params,
    headers=headers,
    json=json_data,
)

print(response.json())

Node.js

import axios from 'axios';

const response = await axios.post(
  'https://www.doordash.com/graphql/searchWithFilterFacetFeed',
  {
    'operationName': 'searchWithFilterFacetFeed',
    'variables': {
      'cursor': 'eyJvZmZzZXQiOjUwLCJ2ZXJ0aWNhbF9pZHMiOltdLCJjcm9zc192ZXJ0aWNhbF9wYWdlX3R5cGUiOiJHTE9CQUxfU0VBUkNIX1BBR0UiLCJwYWdlX3N0YWNrX3RyYWNlIjpbXSwibGF5b3V0X292ZXJyaWRlIjoiVU5TUEVDSUZJRUQiLCJpc19wYWdpbmF0aW9uX2ZhbGxiYWNrIjpudWxsLCJzb3VyY2VfcGFnZV90eXBlIjpudWxsLCJ2ZXJ0aWNhbF9uYW1lcyI6e319',
      'filterQuery': '',
      'query': 'street food',
      'isDebug': false
    },
    'query': 'query searchWithFilterFacetFeed($cursor: String, $filterQuery: String, $query: String!, $isDebug: Boolean, $fromFilterChange: Boolean, $serializedBundleGlobalSearchContext: String, $address: String) {\n  searchWithFilterFacetFeed(\n    cursor: $cursor\n    filterQuery: $filterQuery\n    query: $query\n    isDebug: $isDebug\n    fromFilterChange: $fromFilterChange\n    serializedBundleGlobalSearchContext: $serializedBundleGlobalSearchContext\n    address: $address\n  ) {\n    ...FacetFeedV2ResultFragment\n    __typename\n  }\n}\n\nfragment FacetFeedV2ResultFragment on FacetFeedV2Result {\n  body {\n    id\n    header {\n      ...FacetV2Fragment\n      __typename\n    }\n    body {\n      ...FacetV2Fragment\n      __typename\n    }\n    layout {\n      omitFooter\n      __typename\n    }\n    __typename\n  }\n  page {\n    ...FacetV2PageFragment\n    __typename\n  }\n  header {\n    ...FacetV2Fragment\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2Fragment on FacetV2 {\n  ...FacetV2BaseFragment\n  childrenMap {\n    ...FacetV2BaseFragment\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2BaseFragment on FacetV2 {\n  id\n  childrenCount\n  component {\n    ...FacetV2ComponentFragment\n    __typename\n  }\n  name\n  text {\n    ...FacetV2TextFragment\n    __typename\n  }\n  images {\n    main {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    icon {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    background {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    accessory {\n      ...FacetV2ImageFragment\n      __typename\n    }\n    custom {\n      key\n      value {\n        ...FacetV2ImageFragment\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  style {\n    spacing\n    background_color\n    border {\n      color\n      width\n      style\n      __typename\n    }\n    sizeClass\n    __typename\n  }\n  layout {\n    omitFooter\n    gridSpecs {\n      Mobile {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Phablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Tablet {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      Desktop {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      WideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      UltraWideScreen {\n        ...FacetV2LayoutGridFragment\n        __typename\n      }\n      __typename\n    }\n    dlsPadding {\n      top\n      right\n      bottom\n      left\n      __typename\n    }\n    __typename\n  }\n  custom\n  logging\n  __typename\n}\n\nfragment FacetV2ComponentFragment on FacetV2Component {\n  id\n  category\n  __typename\n}\n\nfragment FacetV2TextFragment on FacetV2Text {\n  title\n  titleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  subtitle\n  subtitleTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  accessory\n  accessoryTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  description\n  descriptionTextAttributes {\n    textStyle\n    textColor\n    __typename\n  }\n  custom {\n    key\n    value\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2ImageFragment on FacetV2Image {\n  uri\n  placeholder\n  local\n  style\n  logging\n  events {\n    click {\n      name\n      data\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment FacetV2LayoutGridFragment on FacetV2LayoutGrid {\n  interRowSpacing\n  interColumnSpacing\n  minDimensionCount\n  __typename\n}\n\nfragment FacetV2PageFragment on FacetV2Page {\n  next {\n    name\n    data\n    __typename\n  }\n  onLoad {\n    name\n    data\n    __typename\n  }\n  __typename\n}\n'
  },
  {
    params: {
      'operation': 'searchWithFilterFacetFeed'
    },
    headers: {
      'authority': 'www.doordash.com',
      'accept': '*/*',
      'accept-language': 'en-US',
      'content-type': 'application/json',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
    }
  }
);
console.log(JSON.stringify(response.data));

© www.soinside.com 2019 - 2024. All rights reserved.