meeshanya
@meeshanya
кодокот

Почему не находит страницу запросом requests, но находит с cURL и Go?

выполняю запрос к странице в python при помощи requests - сервер отвечает страницей с заголоком "страница не найдена"
тот же самый но cURL - все отлично
попробовал GO - тоже получаю нужные данные, причем даже если не отправляю headers и coockie
пример url
на питоне:
import requests 
import coockie

main_url = coockie.host
def main():
     r = requests.get(main_url, headers=coockie.headers, cookies=coockie.cookies)
     return bs(r.text ,'lxml')

на Го:
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("GET", "https://ks-rus.com/catalog/zadvizhki_shibernye/", nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:86.0) Gecko/20100101 Firefox/86.0")
	req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
	req.Header.Set("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3")
	req.Header.Set("Connection", "keep-alive")
	req.Header.Set("Referer", "https://ks-rus.com/")
	req.Header.Set("Upgrade-Insecure-Requests", "1")
	req.Header.Set("TE", "Trailers")
	req.Header.Set("Cookie", "BITRIX_SM_SALE_UID=многабукав")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	bodyText, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", bodyText)
}

cURL
curl 'https://ks-rus.com/catalog/zadvizhki_shibernye/' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:86.0) Gecko/20100101 Firefox/86.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Connection: keep-alive' -H 'Referer: https://ks-rus.com/' -H 'Cookie: BITRIX_SM_SALE_UID=многабукав' -H 'Upgrade-Insecure-Requests: 1' -H 'TE: Trailers'

есть подозрение что это все из-за того что requests https не умеет
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
requests https не умеет

а?

Даже без заголовков и куков получает точно такой же код, как и в браузере.

spoiler
cookie, не coockie
Ответ написан
linuxoid6_9
@linuxoid6_9
Devops engineer
User agent пропиши для python как для остальных. На сервере скорее всего правило запрещающее для всяких ботов запросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы