当前位置: 首页 > 面试题库 >

如何使用python取消缩短URL?

伯英武
2023-03-14
问题内容

解决问题的答案(使用unshort.meAPI)是我的问题,我专注于取消youtube链接。由于unshort.me易于使用,这将返回我无法解析的验证码几乎90%的结果。

到目前为止,我仍然坚持使用:

def unshorten_url(url):
    resolvedURL = urllib2.urlopen(url)  
    print resolvedURL.url

    #t = Test()
    #c = pycurl.Curl()
    #c.setopt(c.URL, 'http://api.unshort.me/?r=%s&t=xml' % (url))
    #c.setopt(c.WRITEFUNCTION, t.body_callback)
    #c.perform()
    #c.close()
    #dom = xml.dom.minidom.parseString(t.contents)
    #resolvedURL = dom.getElementsByTagName("resolvedURL")[0].firstChild.nodeValue
    return resolvedURL.url

注意:注释中的所有内容都是我在使用unshort.me服务(返回验证码链接)时尝试执行的操作。

有谁知道一种更有效的方法来完成此操作而无需使用open(因为这浪费带宽)?


问题答案:

在该问题中使用评分最高的答案(而非公认的答案):

# This is for Py2k.  For Py3k, use http.client and urllib.parse instead, and
# use // instead of / for the division
import httplib
import urlparse

def unshorten_url(url):
    parsed = urlparse.urlparse(url)
    h = httplib.HTTPConnection(parsed.netloc)
    resource = parsed.path
    if parsed.query != "":
        resource += "?" + parsed.query
    h.request('HEAD', resource )
    response = h.getresponse()
    if response.status/100 == 3 and response.getheader('Location'):
        return unshorten_url(response.getheader('Location')) # changed to process chains of short urls
    else:
        return url


 类似资料:
  • 我有Bitly v3的这段代码,它运行良好。 然而,如何在新版本中做到这一点?上面的示例使用API键,但为了支持OAuth请求,它已被弃用。 如何使用Bitly v4缩短URL?

  • 问题内容: 我希望能够采用缩短或未缩短的URL并返回其未缩短的形式。我如何制作一个python程序来做到这一点? 附加说明: 情况1:缩短->未缩短 情况2:未缩短->未缩短 例如在输入数组中应该在输出数组中 例如在输入数组中应该在输出数组中 问题答案: 将HTTP HEAD请求发送到URL并查看响应代码。如果代码是30x,请查看标题以获取未缩短的URL。否则,如果代码是20x,则不会重定向URL

  • 问题内容: 我正在尝试读取TLS消息。具体来说,是带有证书详细信息(handshake_type = 11)的证书。我正在做的是先检查邮件中是否包含。如果是这样,我将像这样提取有效负载:。接下来,我要检查 第一个 字节是,接下来的两个字节需要是正确的TLS版本。 问题在于此消息没有通过这些条件。WireShark向我显示了位置上的字节(已附加图片),但是我想这样做是为了方便。 那么我的假设是有效载

  • 问题内容: 如果文件是A ,我可以解压缩文件,如果文件类型是I,则可以解压缩文件。我如何使用python 2.7进行此工作? 问题答案: 试试这个包:

  • 本文向大家介绍Python如何使用RabbitMQ的消息,包括了Python如何使用RabbitMQ的消息的使用技巧和注意事项,需要的朋友参考一下 示例 从导入库开始。 使用消息时,我们首先需要定义一个函数来处理传入的消息。这可以是任何可调用的函数,并且必须采用一个消息对象或一个消息元组(取决于中to_tuple定义的参数start_consuming)。 除了处理传入消息中的数据外,我们还必须确