Python中文
首页
教程
问答
标签
搜索
登录
注册
实现一个bittorent客户端,我从
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试用python实现bittorrent客户机(我知道有lib可以很容易地为我实现这一点,但我只是在尝试学习新东西)。在</p> <p>我下载并成功地解码了torrent文件,但是当我试图在跟踪器上执行GET请求时,我得到了403的响应,我不知道为什么。这是我尝试的(这是从python shell复制的代码):</p> <pre><code>>>> f = open("torrents/test.torrent") >>> torrentData = bencoder.decode(f.read()) >>> torrentData["announce"] 'http://reactor.flro.org:8080/announce.php?passkey=d59fc5b5b9e2664895ad1c68a3621caf' >>> params["info_hash"] = sha1(bencoder.encode(torrentData["info"])).digest() >>> params["peer_id"] = '-AZ-1234-12345678901' >>> params["left"] = sum(f["length"] for f in torrentData["info"]["files"]) >>> params["port"] = 6890 >>> params["uploaded"] = 0 >>> params["downloaded"] = 0 >>> params["compact"] = 1 >>> params["event"] = "started" >>> params {'uploaded': 0, 'compact': 1, 'info_hash': '\xab}\x19\x0e\xac"\x9d\xcf\xe5g\xd4R\xae\xee\x1e\xd7\ >>> final_url = torrentData["announce"] + "&" + urllib.urlencode(params) >>> final_url 'http://reactor.flro.org:8080/announce.php?passkey=d59fc5b5b9e2664895ad1c68a3621caf&uploaded=0&co >>> urllib2.urlopen(final_url) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ return opener.open(url, data, timeout) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ response = meth(req, response) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ 'http', request, response, code, msg, hdrs) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ return self._call_chain(*args) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ result = func(*args) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden </code></pre> <p>我在params文件夹中丢失了什么吗?我也尝试了这个torrent在我的客户机和它的工作,所以追踪器工作得很好。我甚至尝试了裸公告网址(没有参数)和同样的事情。从我从bittorrent规范中读到的内容中,没有提到来自跟踪器的403响应。在</p> <p>如果你们能帮我解决这个问题我会很高兴的。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>好吧,我设法解决了这个问题。这有点傻,但实际上是因为对跟踪器的请求没有任何报头,而跟踪器实际上需要一个用户代理,否则它会拒绝请求。我所要做的就是在请求中添加一个用户代理。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
9 回答
我想从用户导入值,为此
9 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
5 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
10 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
10 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
8 回答
我想从第一个空lin开始解析文本文件
9 回答
我想从简历、简历中提取特定部分
6 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
1 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
3 回答
我想从网上搜集一些关于抵押贷款的数据
10 回答
我想从网站上删除电子邮件地址
1 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
6 回答
我想从网站中提取数据,然后将其显示在我的网页上
9 回答
我想从网页上提取统计数据。
4 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
1 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
9 回答
我想从课堂上打印字典里的键
3 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
2 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
7 回答