[英]How to login to webpage with cookies and user-agent?
I am trying to log to certain server and download pictures from there programatically.我正在尝试登录到某些服务器并以编程方式从那里下载图片。 I know login and I was able to get which variables are username and password.我知道登录,并且能够获取哪些变量是用户名和密码。 I was also able to download pictures which needed no password with this code.我还可以使用此代码下载不需要密码的图片。
Web page keeps telling me my user agent is unsupported, so I assume I am setting user agent incorrectly. Web 页面一直告诉我我的用户代理不受支持,所以我认为我设置的用户代理不正确。
It needs cookies and user-agent.它需要 cookies 和用户代理。 I know how to login to pages with cookies but I do not know how to add User-agent parameter to HTTP request in Python (and check if it was correctly added).我知道如何使用 cookies 登录页面,但我不知道如何在 Python 中将用户代理参数添加到 HTTP 请求中(并检查是否正确添加)。
I am building standard url opener.我正在建造标准 url 开瓶器。 I am using this code:我正在使用这段代码:
def login(_url, _name, _password):
if 1:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
opener.addheaders = {("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0")}
urllib2.install_opener(opener)
#
# login parameters
# PRE:
# 1] addons.mozilla.org/en-US/firefox/addon/live-http-headers/
# 2] _url is first line, sometimes it ends with do-submit, php...
# 3] _name and _password is content
# SOURCE:
# http://www.oooff.com/php-scripts/basic-curl-form-filling-tutorial/php-newbie-form-fill-tutorial.php
#
else:
#
# i tried even mechanize
# but I do not know how to set it either
#
cookies = mechanize.CookieJar()
opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))
params = urllib.urlencode(dict(login=_name, password=_password))
f = opener.open(_url, params)
data = f.read()
f.close()
return opener
I tried to move adheaders to differend places, but it did not help.我试图将广告头移动到不同的地方,但它没有帮助。 Maybe it can be done with mechanize but I am not sure how.也许可以用机械化来完成,但我不确定如何。
Thanks for help.感谢帮助。 :) :)
The python docs page has this format for building openers using square brackets. python 文档页面具有这种格式,用于使用方括号构建开场白。 You are passing it as {(...)}您将其传递为 {(...)}
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.