找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2381|回复: 7

[求助] 利用cookie模拟网站登录时增加headers 就报错TypeError 求大神...

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟 发表于 2019-7-26 13:15:11 | 显示全部楼层 |阅读模式
利用cookie模拟网站登录时增加headers 就报错
Traceback (most recent call last):
line 56, in <module>
    resp**e = opener.open(url,post_data,headers)
TypeError: a float is required

源代码:

import urllib
import urllib2
import cookielib


cookie = cookielib.MozillaCookieJar()

handler =urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(handler)

headers = {
    'Host':'www.santostang.com',
    'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0',
    'Referer':'http://www.santostang.com/wp-login.php',
    'Origin':'http://www.santostang.com/',
    'Connnection':'keep-alive'

    }

post_data = urllib.urlencode({
    'log':'test',
    'pwd':'a12345',
    'rememberme':'forever',
    'redirect_to':'http://www.santostang.com/wp-admin/',
    'testcookie':'1'


    })

url = 'http://www.santostang.com/wp-login.php'


resp**e = opener.open(url,post_data,headers)

print(resp**e.read())

错误信息:
Traceback (most recent call last):
line 56, in <module>
    resp**e = opener.open(url,post_data,headers)
  File "C:\Python27\lib\urllib2.py", line 429, in open
    resp**e = self._open(req, data)
  File "C:\Python27\lib\urllib2.py", line 447, in _open
    '_open', req)
  File "C:\Python27\lib\urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 1228, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "C:\Python27\lib\urllib2.py", line 1195, in do_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "C:\Python27\lib\httplib.py", line 1042, in request
    self._send_request(method, url, body, headers)
  File "C:\Python27\lib\httplib.py", line 1082, in _send_request
    self.endheaders(body)
  File "C:\Python27\lib\httplib.py", line 1038, in endheaders
    self._send_output(message_body)
  File "C:\Python27\lib\httplib.py", line 882, in _send_output
    self.send(msg)
  File "C:\Python27\lib\httplib.py", line 844, in send
    self.connect()
  File "C:\Python27\lib\httplib.py", line 821, in connect
    self.timeout, self.source_address)
  File "C:\Python27\lib\socket.py", line 563, in create_connection
    sock.settimeout(timeout)
  File "C:\Python27\lib\socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
TypeError: a float is required



回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-7-26 15:24:35 | 显示全部楼层
用urllib2.Request试试
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟  楼主| 发表于 2019-7-26 16:50:54 | 显示全部楼层
sheeboard 发表于 2019-7-26 15:24
用urllib2.Request试试

代码修改为

import urllib
import urllib2
import cookielib


cookie = cookielib.MozillaCookieJar()

handler =urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(handler)

headers = {
    'Host':'www.santostang.com',
    'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0',
    'Referer':'http://www.santostang.com/wp-login.php',
    'Origin':'http://www.santostang.com/',
    'Connnection':'keep-alive'

    }

post_data = urllib.urlencode({
    'log':'test',
    'pwd':'a12345',
    'rememberme':'forever',
    'redirect_to':'http://www.santostang.com/wp-admin/',
    'testcookie':'1'


    })

url = 'http://www.santostang.com/wp-login.php'

request= urllib2.Request(url,post_data,headers)
resp**e = opener.open(request)

print(resp**e.read())


修改部分
request= urllib2.Request(url,post_data,headers)
resp**e = opener.open(request)

不报错可以运行但是不出现cookie.txt文件?

回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟  楼主| 发表于 2019-7-26 16:57:38 | 显示全部楼层
sheeboard 发表于 2019-7-26 15:24
用urllib2.Request试试

还有为什么resp**e = opener.open(url,post_data,headers)
会出现这样的错误TypeError: a float is required
为什么需要浮点数?感觉这个报错没什么逻辑?
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟  楼主| 发表于 2019-7-26 17:01:28 | 显示全部楼层
sheeboard 发表于 2019-7-26 15:24
用urllib2.Request试试

修改为
request= urllib2.Request(url,post_data,headers)
resp**e = opener.open(request)
之后

程序可以运行,但是不自动生成cookie.txt文件?
这又是什么原因?
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟  楼主| 发表于 2019-7-27 18:35:01 | 显示全部楼层
sheeboard 发表于 2019-7-26 15:24
用urllib2.Request试试

感谢大神!今天终于弄好了,昨天像中毒了一样
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-7-27 21:23:38 | 显示全部楼层
本帖最后由 sheeboard 于 2019-7-27 21:27 编辑
大内小菜鸟 发表于 2019-7-27 18:35
感谢大神!今天终于弄好了,昨天像中毒了一样

不用谢,是你自己的努力。我不是什么大神,这个问题stackoverflow上有,只是正好碰巧搜到罢了,我也不知道对不对。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
大内小菜鸟  楼主| 发表于 2019-7-28 14:19:44 | 显示全部楼层
sheeboard 发表于 2019-7-27 21:23
不用谢,是你自己的努力。我不是什么大神,这个问题stackoverflow上有,只是正好碰巧搜到罢了,我也不知道 ...

还是很感谢,后来仔细看了文档,跟library上面的做法一样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表