2012-06-03 1 views
2

Я пытаюсь написать небольшой веб-прокси с помощью python, я могу загружать и показывать обычные веб-сайты, но я не могу войти в facebook/gmail/... что угодно с логином. Я видел несколько примеров аутентификации здесь http://docs.python.org/release/2.5.2/lib/urllib2-examples.html, но я не знаю, как я могу сделать общее решение для всех веб-сайтов с логином, любой идеей?Как открыть сайты facebook/gmail/authencation с помощью python urllib2.urlopen?

мой код:

def showurl(): 
    url=request.vars.url 
    response = urllib2.urlopen(url) 
    html = response.read() 
    return html 

ответ

2

Ваш прокси-сервер должен хранить куки, поиск StackOverflow для cookielib.

Многие веб-сайты аутентифицируют клиентов по-разному, поэтому ваша задача - подделать клиента как можно больше с вашим прокси-сервером. Некоторые веб-сайты аутентифицируются по типу браузера, некоторые - путем создания файлов cookie и хранения sessionId в нем или другого скрытого содержимого JavaScript, что позволяет выполнять некоторые шаги аутентификации. Что касается моего небольшого опыта, все важные вещи заканчиваются куки.

Это просто плоский пример использования cookielib.

import urllib, urllib2, cookielib, getpass 

username = '' 
button = 'submit' 
www_login = 'http://website.com' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders.append(('User-agent', 'Mozilla/4.0')) 
opener.addheaders.append(('Referer', '/dev/null')) 

login_data = urllib.urlencode({'username' : username, 'password': getpass.getpass("Password:"), 'login' : button}) 
resp = opener.open(www_login, login_data) 
print resp.read() 

Редакцией: Не вводить в заблуждение себя с «проверкой подлинности HTTP» и аутентификация с помощью facebook/Gmail, потому что это разные вещи. «Базовая аутентификация HTTP» или «Digest HTTP Authentication» осуществляется через веб-сервер не веб-сайт, который вы хотите, чтобы войти.

+0

есть способ заставить его работать на всех веб-сайтов? так что мне не нужно вводить имя пользователя и передавать навсегда один сайт int code? (Я хочу, чтобы пользователи имели возможность входить в систему anywebsite и вводить свой собственный пароль пользователя) –

+0

теперь я понимаю вопрос ... это возможно, но я не уверен, есть ли простой способ сделать это, как и все в одна функция ... http://proxies.xhaus.com/python/ это список проектов прокси-сервера python http://code.google.com/p/proxpy/ ... google «веб-прокси в python». И я думаю, что ваша проблема - https/cookie прямо сейчас, если вы уже сделали простой HTTP-прокси. Надеюсь это поможет. – okobaka

+0

http://docs.python-requests.org/en/latest/index.html это «замена» для urllib2, что упрощает работу ... – okobaka