Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写一个程序,在其他一些';s的网站,这是不可能的吗?_Javascript_C#_Python_Cross Domain_Same Origin Policy - Fatal编程技术网

Javascript 编写一个程序,在其他一些';s的网站,这是不可能的吗?

Javascript 编写一个程序,在其他一些';s的网站,这是不可能的吗?,javascript,c#,python,cross-domain,same-origin-policy,Javascript,C#,Python,Cross Domain,Same Origin Policy,通常,我会在浏览器中打开其他人的网站,比如google.com,在搜索框中键入内容,然后单击搜索 是否不可能编写一个程序来完成这项工作,并在结果页面上查找某些内容,而不是手动完成 我尝试了javascript,但似乎没有办法绕过同一来源限制 PS:不仅仅是搜索,也许我还需要输入用户名、密码和登录名。 除了javascript,我还使用C#。是的,您可以在C#(winforms)中完成这项工作。首先,您需要创建Internet explorer浏览器的实例,然后初始化其参数,如大小、位置、URL(

通常,我会在浏览器中打开其他人的网站,比如google.com,在搜索框中键入内容,然后单击搜索

是否不可能编写一个程序来完成这项工作,并在结果页面上查找某些内容,而不是手动完成

我尝试了javascript,但似乎没有办法绕过同一来源限制

PS:不仅仅是搜索,也许我还需要输入用户名、密码和登录名。 除了javascript,我还使用C#。

是的,您可以在C#(winforms)中完成这项工作。首先,您需要创建Internet explorer浏览器的实例,然后初始化其参数,如大小、位置、URL(www.google.com)等。URL指定应加载到IE浏览器中的网站

在此之后,您需要创建一个函数来处理网站(www.google.com)中的控件。确保此函数仅在网站关闭后调用 已完全加载。您可以为此使用事件处理程序

源代码:-
创建浏览器实例

this.webBrowser1 = new System.Windows.Forms.WebBrowser();
初始化浏览器参数

this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
this.webBrowser1.Location = new System.Drawing.Point(0, 0);
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
this.webBrowser1.Name = "webBrowser1";
this.webBrowser1.Size = new System.Drawing.Size(903, 448);
this.webBrowser1.TabIndex = 0;
// specify your url here
this.webBrowser1.Url = new System.Uri("www.google.com", System.UriKind.Absolute);
创建事件处理程序

this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
处理网站中的控件:

//sets user name text box to ganesh  
webBrowser1.Document.All.GetElementsByName("username")[0].SetAttribute("Value", "ganesh");

真正做到这一点的唯一方法是使用代理服务器,但您可以使用javascript和node轻松创建一个代理服务器:

var http = require('http');

http.createServer(onRequest).listen(3000);

function onRequest(client_req, client_res) {
  console.log('serve: ' + client_req.url);

  var options = {
    hostname: 'www.google.com',
    port: 80,
    path: client_req.url,
    method: 'GET'
  };

  var proxy = http.request(options, function (res) {
    res.pipe(client_res, {
      end: true
    });
  });

  client_req.pipe(proxy, {
    end: true
  });
}

上述代码将返回谷歌的主页。由于您自己的本地服务器正在返回页面,因此您不必再担心跨域问题,可以随意使用数据。

这只是供您个人使用吗?你可能想看看浏览器扩展。也许你可以写入url…使用tampermonkey和greasemonkey。为此,我强烈建议你使用winforms(visual studio)中的webbrowser控件。