我试图通过pycURL使用libcurl编写URL扩展程序(如果您不知道pycURL不会消失,这是libcurl的问题)。
URL扩展器是URL缩短器的反向:目的是获得最终的URL而不留任何重定向,这样我们就可以得到链接的真正域。
下面是我要做的代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import pycurl
import urllib
url="https://t.co/0u0Jb2Pw7k" #Wikipedia Colonne Vendôme
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.FOLLOWLOCATION, 1) # Allow URL elongation
c.setopt(pycurl.SSL_VERIFYHOST, 0)
c.setopt(pycurl.SSL_VERIFYPEER, 0)
c.setopt(pycurl.MAXREDIRS, 25)
c.setopt(pycurl.AUTOREFERER, 1)
c.setopt(pycurl.WRITEFUNCTION, lambda x: None) # No output of body. Don't care
c.setopt(pycurl.HEADER, 1) # For debug only
c.setopt(pycurl.VERBOSE, 1) # For debug only
c.setopt(pycurl.USERAGENT, "Opera/12.02 (X11; Linux i686; Opera Cqcb Style; U; fr-FR) Presto/2.9.201 Version/12.02/AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu")
c.setopt(pycurl.REFERER, url)
try:
c.perform()
except:
pass
print c.getinfo(pycurl.HTTP_CODE) , c.getinfo(pycurl.EFFECTIVE_URL)
有多个问题:
libcURL似乎无法处理IRI或IDN。在上面代码中给出的情况下,URL应该被延长为https://fr.wikipedia.org/wiki/Colonne_Vendôme
,但是libcurl返回https://fr.wikipedia.org/wiki/Colonne_Vendme
。我想你能看出区别。我知道这些网址不符合RFC,但他们是野生的,所以我必须能够管理他们。所以我的问题是:
有没有办法强迫libcURL理解这些URL?有没有强制编码的方法?请求之间有一种编码方式吗?
URL片段或锚点(#)也有问题。如果最终的URL包含一个片段,libcurl会在返回答案之前对其进行修剪。它在HTTP方式中是有意义的,因为不应该将任何片段发送到服务器,但是我当然需要这些部分。不是因为锚定很重要,而是因为如果这个URL http://goo.gl/I8AYpW
被拉长为https://groups.google.com/forum/
,它绝对没有用。所以我的问题是:
有没有办法在最后得到碎片?有没有一种方法可以获得最后请求的URL(因此,使用片段)?再说一次,有没有一种方法可以在请求之间工作来保存最后的片段?
有几个网站不能很好地与这种拉长机。像那些网站:http://t.co/Gej1JY3sgf
返回HTTP 301,响应为空,但可在浏览器中工作http://t.co/3Ek7U438Ee
返回HTTP 303,但可在浏览器中工作http://tinyurl.com/lvyapao
不会被拉长(就像任何tinyurl一样)。
你对此有什么建议或提示吗?
我要做的是做好代码。所以我不喜欢权宜之计,但如果没有其他解决办法,我会用那些。如果你告诉我有比libcurl更好的方法,我可以放弃pycURL。但我不能抛弃Python。在
所以,如果你有什么东西,我就要了。我不知道现在该怎么办。在
编辑:
最后,更新:
这一次,Twitter上有一个安全问题。我试图拉长t.co的URL,但是如果你使用wget/curl/etc.stuff而不是HTTP/JS,Twitter不会返回相同的URL。由于这是一个安全问题,我赢得了一笔奖金,但直到一周前才谈到:https://hackerone.com/reports/34084
对于这个问题,下面的答案解决了我的问题。所以他赢了。
这个问题没有全局解决方案,因为它必须逐个处理。
这个libcurl的东西看起来不会起作用。我将使用包requests:
相关问题 更多 >
编程相关推荐