it-swarm.com.de

Wie benutze ich Python Anfragen, um einen Browser-Besuch vorzutäuschen?

Ich möchte den Inhalt von der unten stehenden Website erhalten. Wenn ich einen Browser wie Firefox oder Chrome) verwende, könnte ich die gewünschte Webseite bekommen, aber wenn ich das Python) Anforderungspaket verwende (oder wget command) um es zu bekommen, gibt es eine völlig andere HTML-Seite zurück. Ich dachte, der Entwickler der Website hätte einige Blöcke dafür gemacht, also lautet die Frage:

Wie kann ich einen Browser-Besuch vortäuschen, indem ich python request oder command wget verwende?

http://www.ichangtou.com/#company:data_000008.html

90
user1726366

Zur Verfügung stellen User-Agent header :

import requests

url = 'http://www.ichangtou.com/#company:data_000008.html'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(url, headers=headers)
print(response.content)

Hier ist eine Liste der User-Agent-Zeichenfolgen für verschiedene Browser:


Als Randnotiz gibt es ein ziemlich nützliches Paket von Drittanbietern mit dem Namen fake-useragent , das eine nette Abstraktionsebene über Benutzeragenten bietet:

fake-useragent

Aktueller einfacher Useragent Faker mit realer Datenbank

Demo:

>>> from fake_useragent import UserAgent
>>> ua = UserAgent()
>>> ua.chrome
u'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36'
>>> ua.random
u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36'
212
alecxe

ob diese frage noch gültig ist

Ich habe gefälschter UserAgent verwendet

Wie benutzt man:

from fake_useragent import UserAgent
import requests


ua = UserAgent()
print(ua.chrome)
header = {'User-Agent':str(ua.chrome)}
print(header)
url = "https://www.hybrid-analysis.com/recent-submissions?filter=file&sort=^timestamp"
htmlContent = requests.get(url, headers=header)
print(htmlContent)

ausgabe:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17
{'User-Agent': 'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'}
<Response [200]>
24
Umesh Kaushik

Versuchen Sie dies mit Firefox als Fake Benutzerprogramm (außerdem ist es ein gutes Startskript für Web-Scraping mit Cookies):

#!/usr/bin/env python2
# -*- coding: utf8 -*-
# vim:ts=4:sw=4


import cookielib, urllib2, sys

def doIt(uri):
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    page = opener.open(uri)
    page.addheaders = [('User-agent', 'Mozilla/5.0')]
    print page.read()

for i in sys.argv[1:]:
    doIt(i)

VERWENDUNGSZWECK:

python script.py "http://www.ichangtou.com/#company:data_000008.html"
7
Gilles Quenot

Die Wurzel der Antwort ist, dass die Person, die die Frage stellt, einen JavaScript-Interpreter benötigt, um zu erfahren, wonach sie sucht. Was ich gefunden habe, ist, dass ich in der Lage bin, alle Informationen, die ich wollte, auf einer Website in JSON abzurufen, bevor sie von JavaScript interpretiert wurden. Dies hat mir eine Menge Zeit gespart, was das Parsen von HTML bedeutet, in der Hoffnung, dass jede Webseite das gleiche Format hat.

Wenn Sie also eine Antwort von einer Website mit Anfragen erhalten, schauen Sie sich wirklich den HTML/Text an, da Sie die Javascripts JSON möglicherweise in der Fußzeile finden, die zum Parsen bereit sind.

2
Daniel Butler