我正在嘗試使用扭曲的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