0

I can login and get the source page properly using requestspackage. Beacause of some reason I can only use the standard library. unfortunately the urlib2 didn't get the same result as request,did I missed some thing?

requests

def login(userName, passWord): url = "https://logindict.youdao.com/login/acc/login" payload = "username=" + userName + "&password=" + passWord + \ "&savelogin=1&app=web&tp=urstoken&cf=7&fr=1&ru=http%3A%2F%2Fdict.youdao.com%2Fwordbook%2Fwordlist%3Fkeyfrom%3Dnull&product=DICT&type=1&um=true" headers = { 'cache-control': "no-cache", 'content-type': "application/x-www-form-urlencoded" } s = requests.session() response = s.post(url, data=payload, headers=headers) print response.text 

urllib2

url = "https://logindict.youdao.com/login/acc/login" data = 'app=web&tp=urstoken&cf=3&fr=1&ru=http%3A%2F%2Fdict.youdao.com%2Fwordbook%2Fwordlist%3Fkeyfrom%3Dlogin_from_dict2.index&product=DICT&type=1&um=true&username=xxx&password=xxx' headers = { 'cache-control': "no-cache", "Content-Type": "application/x-www-form-urlencoded" } req = urllib2.Request(url, data=value, headers=headers) response = urllib2.urlopen(req) the_page = response.read() print the_page 
1
  • Is there any error message? Commented Jun 16, 2017 at 3:21

1 Answer 1

1

Because you don't have cookie that webserver will write/check, while request will do automate.
Use urllib2 with cookielib like below:

import urllib2 import cookielib def login(userName, passWord): url = "https://logindict.youdao.com/login/acc/login" payload = "username=" + userName + "&password=" + passWord + \ "&savelogin=1&app=web&tp=urstoken&cf=7&fr=1&ru=http%3A%2F%2Fdict.youdao.com%2Fwordbook%2Fwordlist%3Fkeyfrom%3Dnull&product=DICT&type=1&um=true" headers = { 'cache-control': "no-cache", 'content-type': "application/x-www-form-urlencoded" } url = url + '?' + payload req = urllib2.Request(url, headers=headers) cookie = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) urllib2.install_opener(opener) response = urllib2.urlopen(req) the_page = response.read() print the_page login('xxxxxx','xxxxx') 

BTW, you need change your passwd now!

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.