Отправить в форму Google, используя вопрос Python - PullRequest
1 голос
/ 26 января 2020

Это URL моей формы Google: https://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/viewform

А вот код Python, который у меня есть:

    import requests

    url = "https://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/formResponse"
    s = requests.Session()
    datos = {"entry.1155905730":"TRES", "entry.2110183202":"DOS", "fvv":1, 'draftResponse':[],'pageHistory':0}    
    x = s.post(url, data=datos)

Я получаю пустые ответы в моей форме Google, как если бы все ответы были пустыми.

Что мне не хватает?

1 Ответ

2 голосов
/ 26 января 2020

Вам нужно отправить сообщение, чтобы войти в форму, прежде чем начинать заполнять, вот как вы видите размещенную вами ссылку: https://docs.google.com/forms/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ_8WaQESydWrXOsJvz2rRw/viewform enter image description here

Попробуйте использовать инспектор DevTools, чтобы попытаться воспроизвести запросы и ответы, осмотрев кнопку «Далее», и на вкладке «Сеть» вы можете найти запрос, который приведет вас в форму:

enter image description here

Как воспроизвести их с python? Классный сайт для преобразования запросов curl в python код curl.trillworks

Вставьте запрос и отправьте его!

In [1]: import requests 
   ...:  
   ...: headers = { 
   ...:     'authority': 'docs.google.com', 
   ...:     'cache-control': 'max-age=0', 
   ...:     'origin': 'https://docs.google.com', 
   ...:     'upgrade-insecure-requests': '1', 
   ...:     'content-type': 'application/x-www-form-urlencoded', 
   ...:     'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like 
   ...: Gecko) Chrome/79.0.3945.117 Safari/537.36', 
   ...:     'sec-fetch-user': '?1', 
   ...:     'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.
   ...: 8,application/signed-exchange;v=b3;q=0.9', 
   ...:     'x-chrome-connected': 'id=102279514883169871637,mode=0,enable_account_consistency=false,consist
   ...: ency_enabled_by_default=false', 
   ...:     'x-client-data': 'CJW2yQEIpbbJAQjEtskBCKmdygEI6qzKAQicrcoBCMuuygEIvbDKAQiOssoBCPe0ygEIl7XKAQiYt
   ...: coBCOy1ygEI4bbKARirpMoB', 
   ...:     'sec-fetch-site': 'same-origin', 
   ...:     'sec-fetch-mode': 'navigate', 
   ...: } 
   ...:  
   ...: data = { 
   ...:   'fvv': '1', 
   ...:   'draftResponse': '[null,null,"4300515041069574030"]\r\n', 
   ...:   'pageHistory': '0', 
   ...:   'fbzx': '4300515041069574030', 
   ...:   'continue': '1' 
   ...: } 
   ...:  
   ...: response = requests.post('https://docs.google.com/forms/u/0/d/e/1FAIpQLSfhLUFVzPk48c-Mdbc1N1ImVAtsZ
   ...: _8WaQESydWrXOsJvz2rRw/formResponse', headers=headers, data=data) 
   ...:  
In [2]: 'DOS' in response.text    # And boom!                                                                         
Out[2]: True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...