Проблема входа в Facebook с Scrapy - PullRequest
3 голосов
/ 17 августа 2011

(Я задал этот вопрос в Google-группе Scrapy без удачи.)

Я пытаюсь войти в Facebook, используя Scrapy. Я попробовал следующее в интерактивной оболочке:

Я установил заголовки и создал запрос следующим образом:

header_vals={'Accept-Language': ['en'], 'Content-Type': ['application/ 
x-www-form-urlencoded'], 'Accept-Encoding': ['gzip,deflate'], 
'Accept': ['text/html,application/xhtml+xml,application/xml;q=0.9,*/ 
*;q=0.8'], 'User-Agent': ['Mozilla/5.0 Gecko/20070219 Firefox/ 
2.0.0.2']}

login_request=Request('https://www.facebook.com/login.php',headers=header_vals) 

fetch(login_request) 

Я перенаправлен:

2011-08-11 13:54:54+0530 [default] DEBUG: Redirecting (meta refresh) 
to <GET https://www.facebook.com/login.php?_fb_noscript=1> from <GET 
https://www.facebook.com/login.php> 

. , ,

[s]   request    <GET https://www.facebook.com/login.php> 

[s]   response   <200 https://www.facebook.com/login.php?_fb_noscript=1> 

Я думаю, это не должно быть перенаправлено туда, если я предоставляю право заголовки?

Я все еще пытаюсь пойти дальше и предоставить данные для входа, используя FormRequest следующим образом:

new_request=FormRequest.from_response(response,formname='login_form',formdata={'email':'...@email.com','pass':'password'},headers=header_vals)

new_request.meta['download_timeout']=180 

new_request.meta['redirect_ttl']=30 

fetch (new_request) приводит к:

2011-08-11 14:05:45+0530 [default] DEBUG: Redirecting (meta refresh) 
to <GET https://www.facebook.com/login.php?login_attempt=1&_fb_noscript=1> 
from <POST https://www.facebook.com/login.php?login_attempt=1>
.
.

[s]   response   <200 https://www.facebook.com/login.php?login_attempt=1&_fb_noscript=1> 

.

Что мне здесь не хватает? Спасибо за любые предложения и помощь.

Я добавлю, что я также попробовал это с BaseSpider, чтобы увидеть, было ли это результатом того, что куки не передаются в оболочке, но там это тоже не работает.

Мне удалось использовать Mechanize для успешного входа в систему. Могу ли я воспользоваться этим, чтобы как-то передать куки в Scrapy?

1 Ответ

1 голос
/ 21 августа 2011

Обратите внимание, что текст "мета-перенаправления" близок к перенаправлению.У Facebook есть тег noscript для автоматического перенаправления клиентов без JavaScript на «/login.php?_fb_noscript=1».Проблема в том, что вместо этого вы публикуете файл "/login.php" и всегда перенаправляетесь на заголовок метаобновления.

Даже если вы справитесь с этой проблемой, это против Facebook robots.txt, поэтому вам не следует этого делать.

Почему бы вам просто не использовать API Graph Facebook

...