python模拟登陆知乎遇到的forbidden问题?

代码如下。

# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

import urllib
import urllib2
import cookielib
import re

username = ''
password = ''

url = 'http://www.zhihu.com'
request = urllib2.Request(url)
res = urllib2.urlopen(request)
contents = res.read().decode('utf-8')

#pattern = re.compile( r'name="_xsrf" value="(.*)"/>')
pattern = re.compile(r'<input type="hidden" name="_xsrf" value="(.*?)"/>',re.S)
result = re.findall(pattern,contents)
xsrf = result[0]


lgurl = 'http://www.zhihu.com/#sgin'
cookie = cookielib.CookieJar()
cookie_handler = urllib2.HTTPCookieProcessor(cookie)
hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0'}
post_data = {'_xsrf':xsrf,'email':username,'password':password,'rememberme':'y'}
dt = urllib.urlencode(post_data)
req = urllib2.Request(lgurl,dt,hdr)
opener = urllib2.build_opener(cookie_handler)
urllib2.install_opener(opener)
response = opener.open(req)
page = response.read()
print page

ps.很多人lgurl是'http://www.zhihu.com/login'但是这个现在是404。
麻烦各位有空指点一下。谢谢了》

阅读 3.9k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进