Как мне войти на этот сайт с помощью scrapy shell и python - 401 Error? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь зайти на этот сайт, ищу.com/login через scrapy shell.я также установил пакет Burp для анализа его URL и заголовков и т. д.

from scrapy.http import FormRequest
frmdata = {"captcha":"","email":"MYEMAIL.com","password":"MY_PASSWORD","is_rememberme":"0","locale":"en_US","auth_type":"bearer_token","date":"2018-12-13T09:56:22.957Z"}


url = "https://www.seeking.com/v3/auth/login"
r = FormRequest(url, formdata=frmdata)
fetch(r)

с этим кодом я получаю ошибку HTTP 401, насколько я могу сказать, по существу, ошибку аутентификации.

Я переадресовал звонки через burpsuite и получил следующий перехват:

POST /v3/auth/login HTTP/1.1
Host: www.seeking.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) 
Gecko/20100101 Firefox/63.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://www.seeking.com/login?fromLogout=1
Content-Type: application/json;charset=utf-8
Web-Version: 3.59
Authorization: Basic NTI2ZTIwYzExMDI0NDYzNTk5OTI5MzUwZThiNWEzMTI6bHN0emd4ZzpSRzRzS3VmdEJMRTQxMm92TnMxbDR6L0ZkZ1dESHZuM2wwZWxtYWhyMGtnPQ==
Content-Length: 166
Connection: close
Cookie: __cfduid=dcf9fd66583d55382f362c18a83d904ca1544519479; 
_gcl_au=1.1.2035701377.1544519485; _ga=GA1.2.1740241044.1544519486; 
com.silverpop.iMAWebCookie=e88c45d1-3c24-11c6-089e-e287aae2c678; 
__cfruid=3eebbdc1e401ed560c23a7c474c41e59b2e93018-1544520179; 
device_cookie=1; __gads=ID=a1e437c03ddad1b3:T=1544519579:S=ALNI_MYb30xY4z76J4NniCK_ZtOyOdPMKA;_lb_user=gfpuzje6kg; seeking_session=eyJpdiI6Im4yMTNJNVNRZjkxbnZzMmNpYnQ4dkE9PSIsInZhbHVlIjoiVGhGVUJDejc1dElJbEwxekh5d2hXUnhjeDlpVWR2dW9IWWJqeDZvRmI3VU9Pc1lpZXZGWGJxejQ1alNXbGVXUGJqaEpORU9LNFJITVh0N3IwR1E0bUE9PSIsIm1hYyI6IjUyODU3MWIxYjM3MGU3M2E0YjI1YzM2MzNmNDc5ZDMzZDdjYTg1ZWMxYWU2ODJjY2JlMTJmZWJlNmUyZDkyNWMifQ%3D%3D {"captcha":"","email":"MYEMAIL","password":"MYPASS","is_rememberme":0,"locale":"en_US","auth_type":"bearer_token","date":"2018-12-14T09:15:56.016Z"}

Я совершенно новичок в этом, и потратил 2 дня, пытаясь выяснить, что мне нужно передать на этот POST для входа в систему.

Мой вопрос

1) на основании этого перехвата, как должен выглядеть мой запрос через FormRequest?

2) Я вижу, что есть куки / авторизация (токен авторизации, чтоизменения с каждым токеном POST, cookie-файлов сеанса и т. д., которые передаются на почту ... Откуда они?Как получить их, когда я очищаю, чтобы я мог успешно войти в систему?

3) Нужно ли сохранять эти переменные сеанса при очистке других страниц сайта после входа в систему?Что-нибудь особенное, что мне нужно сделать, чтобы войти в систему, чтобы получить доступ к другим страницам?

1 Ответ

0 голосов
/ 14 декабря 2018

Похоже, что страница входа ожидает скорой передачи данных, а не строки в кодировке URL (что и создаст FormRequest).

Что-то вроде этого должно работать:

r = scrapy.Request(
    url=url,
    method='POST',
    body=json.dumps(frmdata),
    headers={'Content-Type': 'application/json'},
)

Токены, файлы cookie и т. Д., Вероятно, создаются при первоначальном запросе страницы входа в систему, поэтому вам может необходимо запросить страницу входа перед попыткой входа в систему.
ЭтоВозможно, что некоторые из них сгенерированы с помощью javascript (еще не проверено), поэтому вам может понадобиться копаться в коде js, чтобы выяснить, что происходит, или даже выполнить js самостоятельно (например, с помощью браузера).

Scrapy будет следить за вашей сессией за вас, поэтому вам ничего не нужно делать, чтобы оставаться в системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...