我正在尝试使用扭曲的Web客户端应用程序,但在使用Cookie方面遇到了一些麻烦。有没有人有我能看的例子?使用cookies与twisted.web.client
3
A
回答
2
原来没有简单的方法afaict 标题存储在twisted.web.client.HTTPClientFactory中,但不能从twisted.web.client.getPage()中获得,这是为撤回网页而设计的功能。我结束了重写功能:
from twisted.web import client
def getPage(url, contextFactory=None, *args, **kwargs):
fact = client._makeGetterFactory(
url,
HTTPClientFactory,
contextFactory=contextFactory,
*args, **kwargs)
return fact.deferred.addCallback(lambda data: (data, fact.response_headers))
7
虽然这是真的,getPage
不会轻易允许请求或响应报头(的getPage
怎么不是超级真棒API只是一个例子)的直接访问,饼干实际上支持。
cookies = {cookies: tosend}
d = getPage(url, cookies=cookies)
def cbPage(result):
print 'Look at my cookies:', cookies
d.addCallback(cbPage)
将发送字典中的任何cookie在传递到getPage
时发送。服务器为响应请求而设置的任何新Cookie都将添加到字典中。
查看getPage
时,您可能错过了此功能,因为getPage
签名中没有任何参数cookies
!但是,它确实需要**kwargs
,并且这是如何支持cookies
:传递给getPage
的任何额外参数它不知道它自己,它传递到HTTPClientFactory.__init__
。查看该方法的签名以查看您可以传递给getPage
的所有内容。
1
from twisted.internet import reactor
from twisted.web import client
def getPage(url, contextFactory=None, *args, **kwargs):
return client._makeGetterFactory(
url,
CustomHTTPClientFactory,
contextFactory=contextFactory,
*args, **kwargs).deferred
class CustomHTTPClientFactory(client.HTTPClientFactory):
def __init__(self,url, method='GET', postdata=None, headers=None,
agent="Twisted PageGetter", timeout=0, cookies=None,
followRedirect=1, redirectLimit=20):
client.HTTPClientFactory.__init__(self, url, method, postdata,
headers, agent, timeout, cookies,
followRedirect, redirectLimit)
def page(self, page):
if self.waiting:
self.waiting = 0
res = {}
res['page'] = page
res['headers'] = self.response_headers
res['cookies'] = self.cookies
self.deferred.callback(res)
if __name__ == '__main__':
def cback(result):
for k in result:
print k, '==>', result[k]
reactor.stop()
def eback(error):
print error.getTraceback()
reactor.stop()
d = getPage('http://example.com', agent='example web client',
cookies={ 'some' : 'cookie' })
d.addCallback(cback)
d.addErrback(eback)
reactor.run()
相关问题
- 1. 如何使用cookies? Angular-cookies
- 2. hls.js CORS使用AWS Cloudfront问题与Cookies
- 3. 使用Django与传统认证cookies
- 4. 使用Cookies认证用户
- 5. Javascript不使用QWebView cookies/session
- 6. 使用会话和Cookies
- 7. 如何使用cookies的JQuery
- 8. 使用cookies重定向
- 9. 使用cURL接受cookies?
- 10. 使用OkHttpClient发送cookies
- 11. 使用javascript获取HttpOnly cookies
- 12. Cookies不存储使用ngCookies
- 13. 使用javascript检索cookies XMLHTTPReq
- 14. 实现ITempDataProvider vs使用Cookies
- 15. 使用Javascript管理cookies
- 16. 使用javascript删除cookies
- 17. 会话cookies = cookies?
- 18. 与cookies(寿命和文件)
- 19. 使用硒与python在phantomjs上禁用Cookies
- 20. 如何使用superagent使用cookies?
- 21. Javascript cookies和php cookies
- 22. “浏览器cookies”是否与HTTP cookies相同
- 23. 电子禁用cookies
- 24. Yii使用数据库而不是cookies
- 25. ASP.NET如何一起使用SESSION和Cookies?
- 26. Cookies和渲染使用Phantomjs和python
- 27. 使用套接字访问URL(w/cookies)?
- 28. 测试使用cookies的铁轨助手
- 29. 使用Jsoup检索sessionId cookies的问题
- 30. 使用cURL - 维护cookies和会话等
您想接受其中一个答案吗? – 2011-04-19 17:06:47