python - 如何爬取登录后的socket连接
PHP中文网
PHP中文网 2017-04-18 10:30:17
0
2
470

需要爬取一个登录以后的socket连接,这个socket会不定期的传数据到网页上,然后我目前只能通过不断刷新网页去完成,有没有什么好的办法可以去爬取需要网页登录后的socket呢?

===
继续描述:

已实现的部分

  • 模拟登录 (selenium模拟登录)

  • 伪造UA,刷新cookies,刷新sessionID(通过不停的登录登出换cookie,定时结束webdriver再重启来刷新sessionID)

  • 通过Xpath 来获取页面的数据(lxml)

想要的结果(未实现)

他的socket数据是这样传给浏览器的,我就是想用python搞个socket client接进这个socket,然后等服务器推给我数据.

抽象化的问题

总的来说,爬一个时间点的数据并不困难,但是对于长连接的持续爬虫,持续监控,响应式监控我在网上找不到好的办法,如果是设置定时任务去爬虫,则当采样周期过小的时候(小于1秒),则运算等成本过高且容易被封掉,有没有什么好的办法呢

PHP中文网
PHP中文网

认证0级讲师

全部回覆(2)
洪涛

HTTP是無狀態的,所以你的登陆以后狀態是透過傳給伺服器一個或多個特殊值(一般在封包頭的cookie欄位)來決定的。
抓一下HTTP包,然後模擬時帶上這些特殊值就OK了。


更新內容:
看到它Status Code了,這應該是將連接換成websocket了,那麼這個頁面一定是對方來提供的了。你可以看一下頁面的原始碼,應該會有var ws = new WebSocket("ws://ip:3000"); 之類的內容。 var ws = new WebSocket("ws://ip:3000"); 之类的内容。
看一下对方客户端的要求,然后改写ws.onmessage回调函数,这个函数的话内容就任你拿捏了,你可以用它来判断返回了新内容或者再去请求另一个服务器来处理这些新内容。
你可以看一下这篇文章 网页实时聊天之PHP实现websocket 的客户端看一下對方客戶端的要求,然後改寫ws.onmessage回呼函數,這個函數的話內容就任你拿捏了,你可以用它來判斷返回了新內容或者再去請求另一個伺服器來處理這些新內容。

你可以看一下這篇文章 網頁即時聊天之PHP實作websocket 的客戶端部分,試著修改來實現你的需求。 🎜
刘奇

找個websockt客戶端庫連就好了啊

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!