来自admin-ajax.php的400(错误请求)



我在刮https://www.goldentech.com/dealer-locator/为了获得经销商的数据,我发现我们需要提出两个请求才能获得数据:

  1. https://www.goldentech.com/wp-json/store-locator-plus/v2/geocode/642f858f34c3ba85cd1f61b0f591343d/us/501

  2. https://www.goldentech.com/wp-admin/admin-ajax.php我已经发现,在第一个请求中添加两个仅两个标头将得到预期的响应

    {'引用人':'https://www.goldentech.com/dealer-locator/',"X-Requested-With':"XMLHttpRequest"}

对于第二个请求,我尝试了所有的方法。我添加了所有的请求头和所有的表单数据,但这个url只给了我400(坏请求(的响应。有人能帮我做这个吗。这是我向第一个url 发送请求的地方

for zipcode in zipcodes:
yield scrapy.Request(f"https://www.goldentech.com/wp-json/store-locator-plus/v2/geocode/642f858f34c3ba85cd1f61b0f591343d/us/{zipcode}", callback=self.get_zipcode_info, headers=self.headers)
break

这是我向第二个url 发送请求的地方

headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Content-Length': '1601',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': '_ga=GA1.2.68338557.1623847312; _hjid=3cc6183f-bc42-42a1-91bc-5bacb5f32cb5; _fbp=fb.1.1623847314112.1626805438; _gid=GA1.2.1518510207.1624188458; _hjTLDTest=1; _hjAbsoluteSessionInProgress=1',
'Host': 'www.goldentech.com',
'Origin': 'https://www.goldentech.com',
'Pragma': 'no-cache',
'Referer': 'https://www.goldentech.com/dealer-locator/',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
form_data = {
'action': 'csl_ajax_search',
'address': '501',
'formdata': 'addressInput=501&addressInputCity=&addressInputState=&addressInputCountry=&nameSearch=&ignore_radius=0',
'lat': '39.0178528',
'lng': '-95.6786165',
'options[0]': 'href="https://www.storelocatorplus.com/documentation/store-locator-plus/getting-started/shortcodes/#center_map_at">center_map_at</a>="401',
'options[1]': 'Bridge',
'options[2]': 'Street,',
'options[3]': 'Old',
'options[4]': 'Forge,',
'options[5]': 'PA',
'options[6]': '18518"',
'options[address_autocomplete]': 'none',
'options[append_to_search]': '',
'options[city]': '',
'options[city_selector]': 'hidden',
'options[country]': '',
'options[country_selector]': 'hidden',
'options[cron_import_recurrence]': 'none',
'options[cron_import_timestamp]': '',
'options[csv_clear_messages_on_import]': '1',
'options[csv_duplicates_handling]': 'update',
'options[csv_file_url]': '',
'options[csv_skip_geocoding]': '0',
'options[default_comments]': '0',
'options[default_page_status]': 'draft',
'options[default_trackbacks]': '0',
'options[disable_initial_directory]': '0',
'options[distance_unit]': 'miles',
'options[dropdown_style]': 'none',
'options[google_map_style]': '',
'options[ignore_radius]': '0',
'options[immediately_show_locations]': '0',
'options[initial_radius]': '25',
'options[installed_version]': '5.5',
'options[label_directions]': 'Directions',
'options[label_email]': 'Email',
'options[label_fax]': 'Fax',
'options[label_phone]': 'Phone',
'options[label_website]': 'Website',
'options[load_data]': '1',
'options[loading_indicator]': '',
'options[map_center]': '401 Bridge Street, Old Forge, PA 18518',
'options[map_center_lat]': '41.3563396',
'options[map_center_lng]': '-75.7496451',
'options[map_domain]': 'maps.google.com',
'options[map_end_icon]': 'https://www.goldentech.com/wp-content/plugins/store-locator-le/images/icons/bulb_red-dot.png',
'options[map_home_icon]': 'https://www.goldentech.com/wp-content/plugins/store-locator-le/images/icons/blank.png',
'options[map_region]': 'us',
'options[map_type]': 'roadmap',
'options[no_autozoom]': '0',
'options[no_homeicon_at_start]': '1',
'options[page_template]': '',
'options[pages_read_more_text]': '',
'options[pages_replace_websites]': '1',
'options[permalink_flush_needed]': '0',
'options[permalink_starts_with]': 'store-page',
'options[prepend_permalink_blog]': '1',
'options[prevent_new_window]': '1',
'options[selector_behavior]': 'use_both',
'options[state]': '',
'options[state_selector]': 'hidden',
'options[tag_autosubmit]': '0',
'options[tag_dropdown_first_entry]': 'Search All Dealers',
'options[tag_label]': '',
'options[tag_output_processing]': 'as_entered',
'options[tag_selections]': 'Search Lift Chair Dealers, Search Mobility Dealers, Search Service Dealers',
'options[tag_selector]': 'dropdown',
'options[tag_show_any]': '1',
'options[territory]': '',
'options[territory_selector]': '',
'options[title]': 'center_map_at',
'options[use_nonces]': '0',
'options[use_same_window]': '1',
'options[use_sensor]': 'false',
'options[zoom_level]': '12',
'options[zoom_tweak]': '0',
'radius': '75'
}
yield scrapy.FormRequest("https://www.goldentech.com/wp-admin/admin-ajax.php", formdata=form_data, headers=headers, callback=self.parse)

我不熟悉Scrapy,但查看文档,发现您已经指定了formdata,是否也需要指定method参数?如果不考虑这一点,则默认值为GET。它应该是POST

最新更新