Ошибка 405 при попытке отправить запрос с Python - PullRequest
0 голосов
/ 15 апреля 2019

Когда я пытаюсь создать запрос на публикацию, я просто получаю сообщение об ошибке 405 или перенаправляем на домашнюю страницу. Я пытаюсь отправить заголовки и аутентификацию. Что мне нужно изменить, чтобы иметь возможность подключиться к URL?

Я уже пытался поменять местами порядок данных = auth и headers = headers при подключении, но он ничего не делал, также я попробовал другой веб-сайт, который не использовал токены csrf, но он также не удался.


import requests                                                                
from bs4 import BeautifulSoup                       


# need to capture a valid csrf token                                           
# first visit the login page to generate one                                   
s = requests.session()                                                         
response = s.get('https://www.klickaud.com/')                              

# extract the token                                                            
soup = BeautifulSoup(response.text)                                            
for n in soup('input'):                                                        
    if n['name'] == 'testdummy':                                             
        token = n['value']                                                     
        break  



tokencsrf ='testdummy =' + token    

# now post to that login page with some valid credentials and the token        
auth = {                                                                       
     'value': 'https://soundcloud.com/bxxmbastic/fygb-flip'                                                           
    ,'testdummy': token 

}

headers = {

    'cookie': '__cfduid=d6cd11b0c476cdcd9364e010aebc3e1b01555296698; PHPSESSID=2eh4q7fndr2srru232bbeqc036'        
    'origin: https://www.klickaud.com'
    ,'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'


}                                                                              
s.post('https://www.klickaud.com/download.php',headers=headers,data=auth)                             

#now we should be authenticated, try visiting a protected page                
response = s.post('https://www.klickaud.com/download.php', headers=headers, data=auth)                              
print(response.text)





Я хочу иметь возможность анализировать веб-сайт с Beautifulsoup, но когда я запрашиваю его, я либо получаю сообщение об ошибке 405, сообщающее, что заголовки указаны неверно, либо меня перенаправляют на домашнюю страницу.

1 Ответ

0 голосов
/ 15 апреля 2019
  1. Вам не нужно передавать куки в заголовках, потому что сеанс делает это
  2. У вас неправильные заголовки dict (проверяйте кавычки и запятые)
  3. Вам не нужно 'аутентифицировать', сделайте только один почтовый запрос

Вот рабочий пример:

import requests
from bs4 import BeautifulSoup

headers = {
    'origin': 'https://www.klickaud.com',
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}

# need to capture a valid csrf token                                           
# first visit the login page to generate one
s = requests.session()
response = s.get('https://www.klickaud.com/', headers=headers)

# extract the token
soup = BeautifulSoup(response.text)
for n in soup('input'):
    if n['name'] == 'testdummy':
        token = n['value']
        break


data = {
    'value': 'https://soundcloud.com/bxxmbastic/fygb-flip',
    'testdummy': token
}

# send post data
response = s.post('https://www.klickaud.com/download.php', headers=headers, data=data)
print(response.text)
...