[Python] how to perform http request via proxy using sshtunnel and python

Discussão em 'Python' iniciado por Stack, Setembro 17, 2024.

  1. Stack

    Stack Membro Participativo

    I'm trying to create an ssh tunnel to a remote_server using a PKey entry from the known_hosts file. All seems to work using this configuration:

    with sshtunnel.open_tunnel(
    (remote_server, 22),
    ssh_username="process",
    ssh_host_key=ssh_host_key,
    remote_bind_address=('www.google.com', 80),
    local_bind_address=('', 8888)
    ) as tunnel:
    url = f'http://localhost:{8888}/'
    response = requests.get(url)
    print(response.text)


    However: When I request www.google.com via the bound socket the response has a different body than when I first ssh into the server and curl it. Here's the comparison:

    This is the response I get when I use the above request command:

    <!DOCTYPE html>
    <html lang=en>
    <meta charset=utf-8>
    <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
    <title>Error 404 (Not Found)!!1</title>
    <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
    </style>
    <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
    <p><b>404.</b> <ins>That’s an error.</ins>
    <p>The requested URL <code>/</code> was not found on this server. <ins>That’s all we know.</ins>


    And here's the response when I manually invoke curl www.google.com from the remote server.

    <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="de"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" item..


    This response goes on to form the full page of www.google.com as seen in the browser.

    Now why is it different and what do I have to change to make the first request answer through the ssh tunnel look like the later?

    Continue reading...

Compartilhe esta Página