# 遠程登錄控制臺
> 譯者:[OSGeo 中國](https://www.osgeo.cn/)
Scrapy附帶一個內置的telnet控制臺,用于檢查和控制Scrapy運行過程。telnet控制臺只是一個運行在scrappy進程內部的常規python shell,因此您可以從中做任何事情。
telnet控制臺是一個 [built-in Scrapy extension](extensions.html#topics-extensions-ref) 它在默認情況下是啟用的,但如果需要,您也可以禁用它。有關擴展本身的更多信息,請參閱 [Telnet控制臺擴展](extensions.html#topics-extensions-ref-telnetconsole) .
警告
通過公共網絡使用telnet控制臺是不安全的,因為telnet不提供任何傳輸層安全性。擁有用戶名/密碼驗證不會改變這一點。
預期用途是本地連接到正在運行的Scrapy Spider(Spider進程和Telnet客戶端在同一臺計算機上)或通過安全連接(VPN、SSH通道)進行連接。請避免在不安全的連接上使用telnet控制臺,或使用 [`TELNETCONSOLE_ENABLED`](settings.html#std:setting-TELNETCONSOLE_ENABLED) 選擇權。
## 如何訪問telnet控制臺
telnet控制臺偵聽中定義的TCP端口 [`TELNETCONSOLE_PORT`](#std:setting-TELNETCONSOLE_PORT) 設置,默認為 `6023` . 要訪問控制臺,您需要鍵入:
```py
telnet localhost 6023
Trying localhost...
Connected to localhost.
Escape character is '^]'.
Username:
Password:
>>>
```
默認用戶名為 `scrapy` 密碼是自動生成的。自動生成的密碼可以在垃圾日志中看到,如下所示:
```py
2018-10-16 14:35:21 [scrapy.extensions.telnet] INFO: Telnet Password: 16f92501e8a59326
```
默認用戶名和密碼可以被設置覆蓋 [`TELNETCONSOLE_USERNAME`](#std:setting-TELNETCONSOLE_USERNAME) 和 [`TELNETCONSOLE_PASSWORD`](#std:setting-TELNETCONSOLE_PASSWORD) .
警告
用戶名和密碼僅提供有限的保護,因為telnet不使用安全傳輸-默認情況下,即使設置了用戶名和密碼,通信也不會加密。
您需要在Windows和大多數Linux發行版中默認安裝的telnet程序。
## telnet控制臺中的可用變量
telnet控制臺就像一個運行在scrappy進程內部的常規python shell,所以您可以從中做任何事情,包括導入新模塊等。
但是,telnet控制臺附帶一些為方便起見而定義的默認變量:
| 捷徑 | 描述 |
| --- | --- |
| `crawler` | 殘廢的爬蟲( [`scrapy.crawler.Crawler`](api.html#scrapy.crawler.Crawler "scrapy.crawler.Crawler") 對象) |
| `engine` | crawler.engine屬性 |
| `spider` | 主動 Spider |
| `slot` | 發動機槽 |
| `extensions` | 擴展管理器(crawler.extensions屬性) |
| `stats` | stats收集器(crawler.stats屬性) |
| `settings` | Scrapy設置對象(crawler.settings屬性) |
| `est` | 打印發動機狀態報告 |
| `prefs` | 內存調試(請參見 [調試內存泄漏](leaks.html#topics-leaks) ) |
| `p` | 到的快捷方式 [pprint.pprint](https://docs.python.org/library/pprint.html#pprint.pprint) 功能 |
| `hpy` | 內存調試(請參見 [調試內存泄漏](leaks.html#topics-leaks) ) |
## telnet控制臺使用示例
以下是使用telnet控制臺可以執行的一些示例任務:
### 查看發動機狀態
你可以使用 `est()` scrapy引擎使用telnet控制臺快速顯示其狀態的方法:
```py
telnet localhost 6023
>>> est()
Execution engine status
time()-engine.start_time : 8.62972998619
engine.has_capacity() : False
len(engine.downloader.active) : 16
engine.scraper.is_idle() : False
engine.spider.name : followall
engine.spider_is_idle(engine.spider) : False
engine.slot.closing : False
len(engine.slot.inprogress) : 16
len(engine.slot.scheduler.dqs or []) : 0
len(engine.slot.scheduler.mqs) : 92
len(engine.scraper.slot.queue) : 0
len(engine.scraper.slot.active) : 0
engine.scraper.slot.active_size : 0
engine.scraper.slot.itemproc_size : 0
engine.scraper.slot.needs_backout() : False
```
### 暫停、恢復和停止 Scrapy 發動機
暫停:
```py
telnet localhost 6023
>>> engine.pause()
>>>
```
恢復:
```py
telnet localhost 6023
>>> engine.unpause()
>>>
```
停止::
```py
telnet localhost 6023
>>> engine.stop()
Connection closed by foreign host.
```
## Telnet控制臺信號
```py
scrapy.extensions.telnet.update_telnet_vars(telnet_vars)
```
在telnet控制臺打開之前發送。您可以連接到這個信號來添加、刪除或更新telnet本地命名空間中可用的變量。為此,需要更新 `telnet_vars` 聽寫你的處理程序。
| 參數: | **telnet_vars** (_dict_) -- telnet變量的dict |
| --- | --- |
## 遠程登錄設置
以下是控制telnet控制臺行為的設置:
### TELNETCONSOLE_PORT
違約: `[6023, 6073]`
用于telnet控制臺的端口范圍。如果設置為 `None` 或 `0` ,使用動態分配的端口。
### TELNETCONSOLE_HOST
違約: `'127.0.0.1'`
telnet控制臺應該監聽的接口
### TELNETCONSOLE_USERNAME
違約: `'scrapy'`
用于telnet控制臺的用戶名
### TELNETCONSOLE_PASSWORD
違約: `None`
telnet控制臺使用的密碼,默認行為是讓它自動生成。
- 簡介
- 第一步
- Scrapy at a glance
- 安裝指南
- Scrapy 教程
- 實例
- 基本概念
- 命令行工具
- Spider
- 選擇器
- 項目
- 項目加載器
- Scrapy shell
- 項目管道
- Feed 導出
- 請求和響應
- 鏈接提取器
- 設置
- 例外情況
- 內置服務
- Logging
- 統計數據集合
- 發送電子郵件
- 遠程登錄控制臺
- Web服務
- 解決具體問題
- 常見問題
- 調試spiders
- Spider 合約
- 常用做法
- 通用爬蟲
- 使用瀏覽器的開發人員工具進行抓取
- 調試內存泄漏
- 下載和處理文件和圖像
- 部署 Spider
- AutoThrottle 擴展
- Benchmarking
- 作業:暫停和恢復爬行
- 延伸 Scrapy
- 體系結構概述
- 下載器中間件
- Spider 中間件
- 擴展
- 核心API
- 信號
- 條目導出器
- 其余所有
- 發行說明
- 為 Scrapy 貢獻
- 版本控制和API穩定性