V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
dsp2138
V2EX  ›  Python

POST 请求这样构建对不对?为啥总不成功

  •  1
     
  •   dsp2138 · 2016-03-12 18:35:09 +08:00 · 5616 次点击
    这是一个创建于 3176 天前的主题,其中的信息可能已经有所发展或是发生改变。
    import requests
    import json

    url='http://www.spprec.com/sczw/jyfwpt/005001/005001001/MoreInfo.aspx?CategoryNum=005001001'
    s = requests.session()

    postdata={'__EVENTTARGET': 'MoreInfoList1$Pager', '__EVENTARGUMENT': '3', '__VIEWSTATE': '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', '__CSRFTOKEN': '/wEFJGJlODIyZDM0LTJmODgtNGQwMS1hNGQxLTJhMzdiZTViZThiMg=='}

    headers={'Accept-Encoding': 'gzip, deflate', 'Referer': 'http://www.spprec.com/sczw/jyfwpt/005001/005001001/MoreInfo.aspx?CategoryNum=005001001', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Content-Type': 'application/x-www-form-urlencoded', 'Origin': 'http://www.spprec.com', 'Connection': 'keep-alive', 'Host': 'www.spprec.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    r=requests.get(url)

    resp = s.post(url,headers=headers,cookies=r.cookies)
    49 条回复    2016-03-13 09:56:31 +08:00
    dsp2138
        1
    dsp2138  
    OP
       2016-03-12 18:37:49 +08:00
    具体 postdata 为啥那么长,我也很纳闷我是不是搞错了!
    但这个网站竟然将网页全文做为一个变量用 js submit 传送了!!

    大虾帮忙分析下,这个 URL 的 post 我这样做对不对!
    hansnow
        2
    hansnow  
       2016-03-12 18:42:08 +08:00
    resp = s.post(url,headers=headers,cookies=r.cookies)

    data 去哪儿了?
    trotyl
        3
    trotyl  
       2016-03-12 18:43:37 +08:00
    你的 postdata 根本就没用过。。不懂你是要干什么。。
    dsp2138
        4
    dsp2138  
    OP
       2016-03-12 18:45:36 +08:00
    @hansnow esp = s.post(url,data=posdate,theaders=headers,cookies=r.cookies)
    抱歉,刚修改了,直接复制了!
    这样也不行的
    dsp2138
        5
    dsp2138  
    OP
       2016-03-12 18:46:15 +08:00
    @trotyl 源码复制时错了,抱歉
    resp = s.post(url,data=posdate,theaders=headers,cookies=r.cookies)
    crab
        6
    crab  
       2016-03-12 18:47:52 +08:00
    __VIEWSTATE 这个参数值是动态的吧?
    dsp2138
        7
    dsp2138  
    OP
       2016-03-12 18:50:03 +08:00
    @crab 这个我 base64 解码看了下,就是当前页的全文的 html 代码!
    具体为啥这么做很是不理解!
    Strikeactor
        8
    Strikeactor  
       2016-03-12 18:50:44 +08:00   ❤️ 1
    dsp2138
        9
    dsp2138  
    OP
       2016-03-12 18:52:35 +08:00
    @Strikeactor 我试试看
    xuzywozz
        10
    xuzywozz  
       2016-03-12 18:55:01 +08:00
    heasers 不全?
    dsp2138
        11
    dsp2138  
    OP
       2016-03-12 18:56:13 +08:00
    @xuzywozz 我应该把 get 得到的 headers 都添加上吗?
    bdbai
        12
    bdbai  
       2016-03-12 21:23:19 +08:00 via iPhone
    这一大串是 ASP.NET WebForm 生成的。你可以直接访问页面得到那串东西,然后模拟浏览器请求 POST 这样也许会好一点。
    xuzywozz
        13
    xuzywozz  
       2016-03-12 21:34:46 +08:00
    @dsp2138 全加上试试 我遇到几次问题都是 headers 不全造成的
    dsp2138
        14
    dsp2138  
    OP
       2016-03-12 21:47:47 +08:00
    @bdbai 我大概也看明白了, cookies 里面的__CSRFCOOKIE ,和 data 里面的__CSRFTOKEN 是保持一致的!
    只是__CSRFTOKEN 的 value 使用了 base64 加密,但又不完全是!__CSRFCOOKIE 的 base64 码和__CSRFTOKEN 不一致!正在琢磨呢
    mhycy
        15
    mhycy  
       2016-03-12 22:03:42 +08:00
    能不能说说在干啥?发了那么多次代码没次对的。。。。囧
    dsp2138
        16
    dsp2138  
    OP
       2016-03-12 22:05:25 +08:00
    @mhycy resp = s.post(url,data=data,cookies=cookies,headers=headers)
    mhycy
        17
    mhycy  
       2016-03-12 22:09:30 +08:00
    @dsp2138 要干啥?
    rcmerci
        18
    rcmerci  
       2016-03-12 22:15:14 +08:00
    卧槽点进来吓尿了
    just1
        19
    just1  
       2016-03-12 22:15:38 +08:00 via Android
    header 有的参数是不能加的
    dsp2138
        20
    dsp2138  
    OP
       2016-03-12 22:20:07 +08:00
    @just1 请教,哪些是不能加的?本人对这方面学习甚少!
    谢谢
    just1
        21
    just1  
       2016-03-12 22:34:47 +08:00 via Android
    @dsp2138 我也忘了,,,一个个测试吧。具体的情况就是 python 命令行下一个请求一直无反应(ctrl+c)也没用
    mhycy
        22
    mhycy  
       2016-03-12 22:47:42 +08:00
    bdbai
        23
    bdbai  
       2016-03-12 22:48:20 +08:00
    这是我写的一个实现:
    https://gist.github.com/bdbai/cfd44c612ca154a62092

    新手上路,请各位轻喷。
    mhycy
        24
    mhycy  
       2016-03-12 22:49:41 +08:00
    https://gist.github.com/anonymous/e837f2f5d9c6c57d7db8
    貌似是 https 才能正常加载。。囧
    awanabe
        25
    awanabe  
       2016-03-12 22:59:35 +08:00
    你给的是 dict , 要用 json dump 一下吧
    Comdex
        26
    Comdex  
       2016-03-12 23:06:40 +08:00
    楼主在搞模拟登录正方教务系统?
    dsp2138
        27
    dsp2138  
    OP
       2016-03-12 23:23:46 +08:00
    /wEFJGY5NjIzYzdkLTI3OGQtNDliYy04YzJiLTNmMjZkODdlMTI1Yw==

    f9623c7d-278d-49bc-8c2b-3f26d87e125c
    是 base64 加密和解密的关系,但 /wEFJGY5NjIzYzdkLTI3OGQtNDliYy04YzJiLTNmMjZkODdlMTI1Yw==解密后开始的几个字符,怎么处理?
    这个怎么用 base64 加密和还原?
    mhycy
        28
    mhycy  
       2016-03-12 23:25:34 +08:00
    @dsp2138 话说,你不是要抓页面么?
    dsp2138
        29
    dsp2138  
    OP
       2016-03-12 23:42:14 +08:00
    @mhycy 是,需要取得下一页的内容
    mhycy
        30
    mhycy  
       2016-03-12 23:43:27 +08:00
    @dsp2138 已经给你写出来了
    bdbai
        31
    bdbai  
       2016-03-12 23:49:38 +08:00 via iPhone
    @dsp2138 网页里面有个分页组件,用正则匹配一下就能读到分页数据了。上面给你写了一个直接读分页页面的。
    dsp2138
        32
    dsp2138  
    OP
       2016-03-12 23:53:13 +08:00
    @bdbai 谢谢, github 我这里没 vpn ,无法访问!
    dsp2138
        33
    dsp2138  
    OP
       2016-03-12 23:54:49 +08:00
    @mhycy 谢谢了,源码能放到国内吗, github 实在访问不了
    mhycy
        34
    mhycy  
       2016-03-12 23:55:27 +08:00
    @dsp2138
    看不到就不能留个言么。。囧

    #coding=utf-8
    import json
    import requests
    import re

    class spprec(object):
    def __init__(self, url):
    self.session = requests.session()
    self.session.headers.update({
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
    })
    self.url = url
    self.post_data = {}

    def getInfo(self, num):
    if len(self.post_data) == 0:
    res = self.session.get(self.url)
    else:
    self.post_data['__EVENTARGUMENT'] = num
    self.post_data["__EVENTTARGET"] = "MoreInfoList1$Pager"
    res = self.session.post(url=self.url, data=self.post_data)

    result = re.findall('<input type="hidden" name="([^"]+)" id="([^"]+)" value="([^"]+)" />', res.text, re.S)
    post_data = {}
    for item in result:
    post_data.update({item[0]: item[2]})
    self.post_data = post_data

    result = re.findall('<a href="(/sczw/InfoDetail/Default.aspx[^"]+)" target="_blank" title="([^"]+)"', res.text, re.S)
    return result

    obj = spprec("http://www.spprec.com/sczw/jyfwpt/005001/005001001/MoreInfo.aspx?CategoryNum=005001001")
    for i in xrange(1, 5):
    data = obj.getInfo(i)
    for item in data:
    print item[1]
    mhycy
        35
    mhycy  
       2016-03-13 00:01:41 +08:00   ❤️ 1
    #coding=utf-8
    import json
    import requests
    import re


    class spprec(object):
    \tdef __init__(self, url):
    \t\tself.session = requests.session()
    \t\tself.session.headers.update({
    \t\t\t'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
    \t\t})
    \t\tself.url = url
    \t\tself.post_data = {}

    \tdef getInfo(self, num):
    \t\tif len(self.post_data) == 0:
    \t\t\tres = self.session.get(self.url)
    \t\telse:
    \t\t\tself.post_data['__EVENTARGUMENT'] = num
    \t\t\tself.post_data["__EVENTTARGET"] = "MoreInfoList1$Pager"
    \t\t\tres = self.session.post(url=self.url, data=self.post_data)

    \t\tresult = re.findall('<input type="hidden" name="([^"]+)" id="([^"]+)" value="([^"]+)" />', res.text, re.S)
    \t\tpost_data = {}
    \t\tfor item in result:
    \t\t\tpost_data.update({item[0]: item[2]})
    \t\tself.post_data = post_data

    \t\tresult = re.findall('<a href="(/sczw/InfoDetail/Default.aspx[^"]+)" target="_blank" title="([^"]+)"', res.text, re.S)
    \t\treturn result

    obj = spprec("http://www.spprec.com/sczw/jyfwpt/005001/005001001/MoreInfo.aspx?CategoryNum=005001001")
    for i in xrange(1, 5):
    \tdata = obj.getInfo(i)
    \tfor item in data:
    \t\tprint item[1]

    缩进全没了,请自行替换吧,\t 对应 4 个空格或者一个 tab
    dsp2138
        36
    dsp2138  
    OP
       2016-03-13 00:07:16 +08:00
    @mhycy 谢谢,我试试看
    dsp2138
        37
    dsp2138  
    OP
       2016-03-13 00:25:13 +08:00
    @mhycy 成功了!
    谢谢你!
    能简单说下原理吗?
    谢谢老师
    bdbai
        38
    bdbai  
       2016-03-13 00:25:36 +08:00 via iPhone   ❤️ 1
    mhycy
        39
    mhycy  
       2016-03-13 00:29:33 +08:00   ❤️ 1
    @dsp2138 不管是我的还是 @bdbai 的都是抓出那个数据重新提交上去而已。。
    我的那段代码比较直白 @bdbai 那段代码比较简洁

    这个写法是很多 asp/.net 站点都有的,具体是什么原理没写过 asp/.net 并不了解
    事实上只要看看源代码抓一次请求就知道怎么发了
    bdbai
        40
    bdbai  
       2016-03-13 00:36:05 +08:00 via iPhone   ❤️ 1
    @mhycy ASP.NET WebForm 的理念就是把网页当成 WinForm 那样的窗体对待,服务端开发能轻松不少,但缺点很明显,每次触发事件都会把整个网页状态都上传、下载一遍。现代一点的网站都不会用它。
    dsp2138
        41
    dsp2138  
    OP
       2016-03-13 00:37:08 +08:00
    @mhycy post 中__VIEWSTATE 和__CSRFTOKEN 不用管吗?后台没有对这里个 input 进行验证?

    我提交的过程基本和你一致,但总是获取到的都是第一页

    谢谢,在仔细看看你的源码
    dsp2138
        42
    dsp2138  
    OP
       2016-03-13 00:37:54 +08:00
    @bdbai 谢谢
    mhycy
        43
    mhycy  
       2016-03-13 00:43:14 +08:00
    @bdbai 看上去这个 POST 像是页面验证的一部分。。
    @dsp2138 生成的 POST_DATA 就是这两个参数的数据,用正则表达式提取出来的。
    仔细看看代码吧,我这个已经写得比较直白了。
    bdbai
        44
    bdbai  
       2016-03-13 00:48:53 +08:00 via iPhone
    @mhycy 嗯有 CSRF 处理。 ViewState 是给服务器还原"窗体"的,不传好像也没问题。
    dsp2138
        45
    dsp2138  
    OP
       2016-03-13 00:50:58 +08:00
    @bdbai @mhycy

    我也成功了!
    发现自己还是对 requests 模块中的 session 不理解!!
    发送的 cookies 有问题!

    @bdbai 这类的网站国内省级站又近十家都是同一家公司做的!因此界面报告导航分页的代码都是一致!

    -------------------------------
    我自己的代码

    ----------------
    import requests
    import json
    from bs4 import BeautifulSoup

    url='http://www.spprec.com/sczw/jyfwpt/005001/005001001/MoreInfo.aspx?CategoryNum=005001001'
    s = requests.session()
    s.headers.update({ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36' })
    r=s.get(url)
    soup=BeautifulSoup(r.text,'html5lib')
    __CSRFTOKEN=soup.find('input',id='__CSRFTOKEN').attrs['value']
    __VIEWSTATE=soup.find('input',id='__VIEWSTATE').attrs['value']
    __EVENTTARGET='MoreInfoList1$Pager'
    __EVENTARGUMENT=4
    postdata={'__EVENTTARGET':__EVENTTARGET,'__EVENTARGUMENT':__EVENTARGUMENT,'__CSRFTOKEN':__CSRFTOKEN,'__VIEWSTATE':__VIEWSTATE}
    resp=s.post(url,postdata)
    bdbai
        46
    bdbai  
       2016-03-13 00:55:49 +08:00 via iPhone
    @dsp2138 Session 会帮你处理好 Cookie 的问题。
    HanSonJ
        47
    HanSonJ  
       2016-03-13 01:07:49 +08:00
    @Comdex 哈哈我看到这么长一串也是第一时间想起方正
    dsp2138
        48
    dsp2138  
    OP
       2016-03-13 09:52:50 +08:00
    谢谢各位老师的及时回复
    shyling
        49
    shyling  
       2016-03-13 09:56:31 +08:00 via iPad
    viewstate 这么长是很正常的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5097 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.