如何在Python中重新创建此PHP代码?
我发现了一个PHP脚本,可以让我做我在这个问题上提出的事情。我可以很好地使用它,但出于好奇,我想用Python重新创建以下代码 我当然可以使用urllib2来获取页面,但我不知道如何处理cookies,因为mechanize(在Windows上使用Python 2.5和2.6进行测试,在Ubuntu上使用Python 2.5进行测试……所有这些都是最新的mechanize版本)似乎在页面上出现问题。如何在python中实现这一点如何在Python中重新创建此PHP代码?,php,python,http,forms,automation,Php,Python,Http,Forms,Automation,我发现了一个PHP脚本,可以让我做我在这个问题上提出的事情。我可以很好地使用它,但出于好奇,我想用Python重新创建以下代码 我当然可以使用urllib2来获取页面,但我不知道如何处理cookies,因为mechanize(在Windows上使用Python 2.5和2.6进行测试,在Ubuntu上使用Python 2.5进行测试……所有这些都是最新的mechanize版本)似乎在页面上出现问题。如何在python中实现这一点 require_once "HTTP/Request.php";
require_once "HTTP/Request.php";
$req = &new HTTP_Request('https://steamcommunity.com');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData("action", "doLogin");
$req->addPostData("goto", "");
$req->addPostData("steamAccountName", ACC_NAME);
$req->addPostData("steamPassword", ACC_PASS);
echo "Login: ";
$res = $req->sendRequest();
if (PEAR::isError($res))
die($res->getMessage());
$cookies = $req->getResponseCookies();
if ( !$cookies )
die("fail\n");
echo "pass\n";
foreach($cookies as $cookie)
$req->addCookie($cookie['name'],$cookie['value']);
我不熟悉PHP,但这可能会让您开始学习。 我在这里安装了opener,它将应用于urlopen方法。如果不想“安装”opener,可以直接使用opener对象。(opener.open(url,数据)) 参考:
与monkut的答案相似,但更简洁一点
import urllib, urllib2
def steam_login(username,password):
data = urllib.urlencode({
'action': 'doLogin',
'goto': '',
'steamAccountName': username,
'steamPassword': password,
})
request = urllib2.Request('https://steamcommunity.com/',data)
cookie_handler = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookie_handler)
response = opener.open(request)
if not 200 <= response.code < 300:
raise Exception("HTTP error: %d %s" % (response.code,response.msg))
else:
return cookie_handler.cookiejar
导入urllib,urllib2
def steam_登录(用户名、密码):
data=urllib.urlencode({
“动作”:“多洛金”,
“goto”:“,
“steamAccountName”:用户名,
“蒸汽密码”:密码,
})
请求=urllib2。请求('https://steamcommunity.com/",数据)
cookie_handler=urllib2.HTTPCookieProcessor()
opener=urlib2.build\u opener(cookie\u处理程序)
响应=opener.open(请求)
如果不是200@Beau Martinez引用freenode#python频道中的主题“现在使用python 3.x还为时过早”,Beau,3.x有很多不一致之处(以wsgiref为例)。从2.x移动到3.x(使用2to3)很容易,但是没有办法轻易地从另一个方向移动。你和MizardX的答案都是+1。。。他们会完美结合:-)你和monkut的答案都是+1。。。它们会完美结合:-)很好,我不熟悉urllib2.Request对象。这可以更好地映射到Therms PHP。
import urllib, urllib2
def steam_login(username,password):
data = urllib.urlencode({
'action': 'doLogin',
'goto': '',
'steamAccountName': username,
'steamPassword': password,
})
request = urllib2.Request('https://steamcommunity.com/',data)
cookie_handler = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookie_handler)
response = opener.open(request)
if not 200 <= response.code < 300:
raise Exception("HTTP error: %d %s" % (response.code,response.msg))
else:
return cookie_handler.cookiejar